package org.xtext.context.aware.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.xtext.context.aware.services.EventXGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalEventXParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'timetable'", "'from'", "'to'", "'-'", "'monday'", "'tuesday'", "'wednesday'", "'thursday'", "'friday'", "'saturday'", "'sunday'", "':'", "'event'", "'-> action'", "'if'", "'('", "'or'", "'and'", "'andnot'", "')'", "'entering'", "'leaving'", "'time='", "'closeby'", "'transition'", "'radius='", "'tolerance='", "'action'", "'on event'", "'sequential action'", "'parallel action'", "'vibrate'", "'duration='", "'short'", "'long'", "'sound'", "'media'", "'openbrowser'", "'notification'"
    };
    public static final int RULE_ID=4;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int EOF=-1;
    public static final int T__19=19;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=5;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int RULE_SL_COMMENT=8;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int RULE_STRING=6;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalEventXParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalEventXParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalEventXParser.tokenNames; }
    public String getGrammarFileName() { return "../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g"; }



     	private EventXGrammarAccess grammarAccess;
     	
        public InternalEventXParser(TokenStream input, EventXGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "ContextAwareModel";	
       	}
       	
       	@Override
       	protected EventXGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleContextAwareModel"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:67:1: entryRuleContextAwareModel returns [EObject current=null] : iv_ruleContextAwareModel= ruleContextAwareModel EOF ;
    public final EObject entryRuleContextAwareModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleContextAwareModel = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:68:2: (iv_ruleContextAwareModel= ruleContextAwareModel EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:69:2: iv_ruleContextAwareModel= ruleContextAwareModel EOF
            {
             newCompositeNode(grammarAccess.getContextAwareModelRule()); 
            pushFollow(FOLLOW_ruleContextAwareModel_in_entryRuleContextAwareModel75);
            iv_ruleContextAwareModel=ruleContextAwareModel();

            state._fsp--;

             current =iv_ruleContextAwareModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleContextAwareModel85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleContextAwareModel"


    // $ANTLR start "ruleContextAwareModel"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:76:1: ruleContextAwareModel returns [EObject current=null] : ( (lv_elements_0_0= ruleElement ) )* ;
    public final EObject ruleContextAwareModel() throws RecognitionException {
        EObject current = null;

        EObject lv_elements_0_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:79:28: ( ( (lv_elements_0_0= ruleElement ) )* )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:80:1: ( (lv_elements_0_0= ruleElement ) )*
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:80:1: ( (lv_elements_0_0= ruleElement ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==11||LA1_0==23||LA1_0==38||(LA1_0>=40 && LA1_0<=41)) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:81:1: (lv_elements_0_0= ruleElement )
            	    {
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:81:1: (lv_elements_0_0= ruleElement )
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:82:3: lv_elements_0_0= ruleElement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getContextAwareModelAccess().getElementsElementParserRuleCall_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleElement_in_ruleContextAwareModel130);
            	    lv_elements_0_0=ruleElement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getContextAwareModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"elements",
            	            		lv_elements_0_0, 
            	            		"Element");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleContextAwareModel"


    // $ANTLR start "entryRuleElement"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:106:1: entryRuleElement returns [EObject current=null] : iv_ruleElement= ruleElement EOF ;
    public final EObject entryRuleElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleElement = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:107:2: (iv_ruleElement= ruleElement EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:108:2: iv_ruleElement= ruleElement EOF
            {
             newCompositeNode(grammarAccess.getElementRule()); 
            pushFollow(FOLLOW_ruleElement_in_entryRuleElement166);
            iv_ruleElement=ruleElement();

            state._fsp--;

             current =iv_ruleElement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleElement176); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleElement"


    // $ANTLR start "ruleElement"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:115:1: ruleElement returns [EObject current=null] : (this_TimeTable_0= ruleTimeTable | this_Event_1= ruleEvent | this_Action_2= ruleAction ) ;
    public final EObject ruleElement() throws RecognitionException {
        EObject current = null;

        EObject this_TimeTable_0 = null;

        EObject this_Event_1 = null;

        EObject this_Action_2 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:118:28: ( (this_TimeTable_0= ruleTimeTable | this_Event_1= ruleEvent | this_Action_2= ruleAction ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:119:1: (this_TimeTable_0= ruleTimeTable | this_Event_1= ruleEvent | this_Action_2= ruleAction )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:119:1: (this_TimeTable_0= ruleTimeTable | this_Event_1= ruleEvent | this_Action_2= ruleAction )
            int alt2=3;
            switch ( input.LA(1) ) {
            case 11:
                {
                alt2=1;
                }
                break;
            case 23:
                {
                alt2=2;
                }
                break;
            case 38:
            case 40:
            case 41:
                {
                alt2=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }

            switch (alt2) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:120:5: this_TimeTable_0= ruleTimeTable
                    {
                     
                            newCompositeNode(grammarAccess.getElementAccess().getTimeTableParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleTimeTable_in_ruleElement223);
                    this_TimeTable_0=ruleTimeTable();

                    state._fsp--;

                     
                            current = this_TimeTable_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:130:5: this_Event_1= ruleEvent
                    {
                     
                            newCompositeNode(grammarAccess.getElementAccess().getEventParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleEvent_in_ruleElement250);
                    this_Event_1=ruleEvent();

                    state._fsp--;

                     
                            current = this_Event_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:140:5: this_Action_2= ruleAction
                    {
                     
                            newCompositeNode(grammarAccess.getElementAccess().getActionParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleAction_in_ruleElement277);
                    this_Action_2=ruleAction();

                    state._fsp--;

                     
                            current = this_Action_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleElement"


    // $ANTLR start "entryRuleTimeTable"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:156:1: entryRuleTimeTable returns [EObject current=null] : iv_ruleTimeTable= ruleTimeTable EOF ;
    public final EObject entryRuleTimeTable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTimeTable = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:157:2: (iv_ruleTimeTable= ruleTimeTable EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:158:2: iv_ruleTimeTable= ruleTimeTable EOF
            {
             newCompositeNode(grammarAccess.getTimeTableRule()); 
            pushFollow(FOLLOW_ruleTimeTable_in_entryRuleTimeTable312);
            iv_ruleTimeTable=ruleTimeTable();

            state._fsp--;

             current =iv_ruleTimeTable; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTimeTable322); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTimeTable"


    // $ANTLR start "ruleTimeTable"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:165:1: ruleTimeTable returns [EObject current=null] : (otherlv_0= 'timetable' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'from' ( (lv_dateFrom_3_0= ruleDate ) ) )? (otherlv_4= 'to' ( (lv_dateTo_5_0= ruleDate ) ) )? ( (lv_weekdays_6_0= ruleWeekDayTime ) )* ) ;
    public final EObject ruleTimeTable() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_dateFrom_3_0 = null;

        EObject lv_dateTo_5_0 = null;

        EObject lv_weekdays_6_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:168:28: ( (otherlv_0= 'timetable' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'from' ( (lv_dateFrom_3_0= ruleDate ) ) )? (otherlv_4= 'to' ( (lv_dateTo_5_0= ruleDate ) ) )? ( (lv_weekdays_6_0= ruleWeekDayTime ) )* ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:169:1: (otherlv_0= 'timetable' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'from' ( (lv_dateFrom_3_0= ruleDate ) ) )? (otherlv_4= 'to' ( (lv_dateTo_5_0= ruleDate ) ) )? ( (lv_weekdays_6_0= ruleWeekDayTime ) )* )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:169:1: (otherlv_0= 'timetable' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'from' ( (lv_dateFrom_3_0= ruleDate ) ) )? (otherlv_4= 'to' ( (lv_dateTo_5_0= ruleDate ) ) )? ( (lv_weekdays_6_0= ruleWeekDayTime ) )* )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:169:3: otherlv_0= 'timetable' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'from' ( (lv_dateFrom_3_0= ruleDate ) ) )? (otherlv_4= 'to' ( (lv_dateTo_5_0= ruleDate ) ) )? ( (lv_weekdays_6_0= ruleWeekDayTime ) )*
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_ruleTimeTable359); 

                	newLeafNode(otherlv_0, grammarAccess.getTimeTableAccess().getTimetableKeyword_0());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:173:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:174:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:174:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:175:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTimeTable376); 

            			newLeafNode(lv_name_1_0, grammarAccess.getTimeTableAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTimeTableRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:191:2: (otherlv_2= 'from' ( (lv_dateFrom_3_0= ruleDate ) ) )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==12) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:191:4: otherlv_2= 'from' ( (lv_dateFrom_3_0= ruleDate ) )
                    {
                    otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleTimeTable394); 

                        	newLeafNode(otherlv_2, grammarAccess.getTimeTableAccess().getFromKeyword_2_0());
                        
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:195:1: ( (lv_dateFrom_3_0= ruleDate ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:196:1: (lv_dateFrom_3_0= ruleDate )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:196:1: (lv_dateFrom_3_0= ruleDate )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:197:3: lv_dateFrom_3_0= ruleDate
                    {
                     
                    	        newCompositeNode(grammarAccess.getTimeTableAccess().getDateFromDateParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleDate_in_ruleTimeTable415);
                    lv_dateFrom_3_0=ruleDate();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getTimeTableRule());
                    	        }
                           		set(
                           			current, 
                           			"dateFrom",
                            		lv_dateFrom_3_0, 
                            		"Date");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:213:4: (otherlv_4= 'to' ( (lv_dateTo_5_0= ruleDate ) ) )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==13) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:213:6: otherlv_4= 'to' ( (lv_dateTo_5_0= ruleDate ) )
                    {
                    otherlv_4=(Token)match(input,13,FOLLOW_13_in_ruleTimeTable430); 

                        	newLeafNode(otherlv_4, grammarAccess.getTimeTableAccess().getToKeyword_3_0());
                        
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:217:1: ( (lv_dateTo_5_0= ruleDate ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:218:1: (lv_dateTo_5_0= ruleDate )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:218:1: (lv_dateTo_5_0= ruleDate )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:219:3: lv_dateTo_5_0= ruleDate
                    {
                     
                    	        newCompositeNode(grammarAccess.getTimeTableAccess().getDateToDateParserRuleCall_3_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleDate_in_ruleTimeTable451);
                    lv_dateTo_5_0=ruleDate();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getTimeTableRule());
                    	        }
                           		set(
                           			current, 
                           			"dateTo",
                            		lv_dateTo_5_0, 
                            		"Date");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:235:4: ( (lv_weekdays_6_0= ruleWeekDayTime ) )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( ((LA5_0>=15 && LA5_0<=21)) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:236:1: (lv_weekdays_6_0= ruleWeekDayTime )
            	    {
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:236:1: (lv_weekdays_6_0= ruleWeekDayTime )
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:237:3: lv_weekdays_6_0= ruleWeekDayTime
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getTimeTableAccess().getWeekdaysWeekDayTimeParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleWeekDayTime_in_ruleTimeTable474);
            	    lv_weekdays_6_0=ruleWeekDayTime();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getTimeTableRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"weekdays",
            	            		lv_weekdays_6_0, 
            	            		"WeekDayTime");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTimeTable"


    // $ANTLR start "entryRuleDate"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:261:1: entryRuleDate returns [EObject current=null] : iv_ruleDate= ruleDate EOF ;
    public final EObject entryRuleDate() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDate = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:262:2: (iv_ruleDate= ruleDate EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:263:2: iv_ruleDate= ruleDate EOF
            {
             newCompositeNode(grammarAccess.getDateRule()); 
            pushFollow(FOLLOW_ruleDate_in_entryRuleDate511);
            iv_ruleDate=ruleDate();

            state._fsp--;

             current =iv_ruleDate; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDate521); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDate"


    // $ANTLR start "ruleDate"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:270:1: ruleDate returns [EObject current=null] : ( ( (lv_year_0_0= RULE_INT ) ) otherlv_1= '-' ( (lv_month_2_0= RULE_INT ) ) otherlv_3= '-' ( (lv_day_4_0= RULE_INT ) ) ) ;
    public final EObject ruleDate() throws RecognitionException {
        EObject current = null;

        Token lv_year_0_0=null;
        Token otherlv_1=null;
        Token lv_month_2_0=null;
        Token otherlv_3=null;
        Token lv_day_4_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:273:28: ( ( ( (lv_year_0_0= RULE_INT ) ) otherlv_1= '-' ( (lv_month_2_0= RULE_INT ) ) otherlv_3= '-' ( (lv_day_4_0= RULE_INT ) ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:274:1: ( ( (lv_year_0_0= RULE_INT ) ) otherlv_1= '-' ( (lv_month_2_0= RULE_INT ) ) otherlv_3= '-' ( (lv_day_4_0= RULE_INT ) ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:274:1: ( ( (lv_year_0_0= RULE_INT ) ) otherlv_1= '-' ( (lv_month_2_0= RULE_INT ) ) otherlv_3= '-' ( (lv_day_4_0= RULE_INT ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:274:2: ( (lv_year_0_0= RULE_INT ) ) otherlv_1= '-' ( (lv_month_2_0= RULE_INT ) ) otherlv_3= '-' ( (lv_day_4_0= RULE_INT ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:274:2: ( (lv_year_0_0= RULE_INT ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:275:1: (lv_year_0_0= RULE_INT )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:275:1: (lv_year_0_0= RULE_INT )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:276:3: lv_year_0_0= RULE_INT
            {
            lv_year_0_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleDate563); 

            			newLeafNode(lv_year_0_0, grammarAccess.getDateAccess().getYearINTTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getDateRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"year",
                    		lv_year_0_0, 
                    		"INT");
            	    

            }


            }

            otherlv_1=(Token)match(input,14,FOLLOW_14_in_ruleDate580); 

                	newLeafNode(otherlv_1, grammarAccess.getDateAccess().getHyphenMinusKeyword_1());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:296:1: ( (lv_month_2_0= RULE_INT ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:297:1: (lv_month_2_0= RULE_INT )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:297:1: (lv_month_2_0= RULE_INT )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:298:3: lv_month_2_0= RULE_INT
            {
            lv_month_2_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleDate597); 

            			newLeafNode(lv_month_2_0, grammarAccess.getDateAccess().getMonthINTTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getDateRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"month",
                    		lv_month_2_0, 
                    		"INT");
            	    

            }


            }

            otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleDate614); 

                	newLeafNode(otherlv_3, grammarAccess.getDateAccess().getHyphenMinusKeyword_3());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:318:1: ( (lv_day_4_0= RULE_INT ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:319:1: (lv_day_4_0= RULE_INT )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:319:1: (lv_day_4_0= RULE_INT )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:320:3: lv_day_4_0= RULE_INT
            {
            lv_day_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleDate631); 

            			newLeafNode(lv_day_4_0, grammarAccess.getDateAccess().getDayINTTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getDateRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"day",
                    		lv_day_4_0, 
                    		"INT");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDate"


    // $ANTLR start "entryRuleWeekDayTime"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:344:1: entryRuleWeekDayTime returns [EObject current=null] : iv_ruleWeekDayTime= ruleWeekDayTime EOF ;
    public final EObject entryRuleWeekDayTime() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleWeekDayTime = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:345:2: (iv_ruleWeekDayTime= ruleWeekDayTime EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:346:2: iv_ruleWeekDayTime= ruleWeekDayTime EOF
            {
             newCompositeNode(grammarAccess.getWeekDayTimeRule()); 
            pushFollow(FOLLOW_ruleWeekDayTime_in_entryRuleWeekDayTime672);
            iv_ruleWeekDayTime=ruleWeekDayTime();

            state._fsp--;

             current =iv_ruleWeekDayTime; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleWeekDayTime682); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleWeekDayTime"


    // $ANTLR start "ruleWeekDayTime"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:353:1: ruleWeekDayTime returns [EObject current=null] : ( ( ( (lv_day_0_1= 'monday' | lv_day_0_2= 'tuesday' | lv_day_0_3= 'wednesday' | lv_day_0_4= 'thursday' | lv_day_0_5= 'friday' | lv_day_0_6= 'saturday' | lv_day_0_7= 'sunday' ) ) ) ( (lv_timeFrom_1_0= ruleTime ) ) otherlv_2= '-' ( (lv_timeTo_3_0= ruleTime ) ) ) ;
    public final EObject ruleWeekDayTime() throws RecognitionException {
        EObject current = null;

        Token lv_day_0_1=null;
        Token lv_day_0_2=null;
        Token lv_day_0_3=null;
        Token lv_day_0_4=null;
        Token lv_day_0_5=null;
        Token lv_day_0_6=null;
        Token lv_day_0_7=null;
        Token otherlv_2=null;
        EObject lv_timeFrom_1_0 = null;

        EObject lv_timeTo_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:356:28: ( ( ( ( (lv_day_0_1= 'monday' | lv_day_0_2= 'tuesday' | lv_day_0_3= 'wednesday' | lv_day_0_4= 'thursday' | lv_day_0_5= 'friday' | lv_day_0_6= 'saturday' | lv_day_0_7= 'sunday' ) ) ) ( (lv_timeFrom_1_0= ruleTime ) ) otherlv_2= '-' ( (lv_timeTo_3_0= ruleTime ) ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:357:1: ( ( ( (lv_day_0_1= 'monday' | lv_day_0_2= 'tuesday' | lv_day_0_3= 'wednesday' | lv_day_0_4= 'thursday' | lv_day_0_5= 'friday' | lv_day_0_6= 'saturday' | lv_day_0_7= 'sunday' ) ) ) ( (lv_timeFrom_1_0= ruleTime ) ) otherlv_2= '-' ( (lv_timeTo_3_0= ruleTime ) ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:357:1: ( ( ( (lv_day_0_1= 'monday' | lv_day_0_2= 'tuesday' | lv_day_0_3= 'wednesday' | lv_day_0_4= 'thursday' | lv_day_0_5= 'friday' | lv_day_0_6= 'saturday' | lv_day_0_7= 'sunday' ) ) ) ( (lv_timeFrom_1_0= ruleTime ) ) otherlv_2= '-' ( (lv_timeTo_3_0= ruleTime ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:357:2: ( ( (lv_day_0_1= 'monday' | lv_day_0_2= 'tuesday' | lv_day_0_3= 'wednesday' | lv_day_0_4= 'thursday' | lv_day_0_5= 'friday' | lv_day_0_6= 'saturday' | lv_day_0_7= 'sunday' ) ) ) ( (lv_timeFrom_1_0= ruleTime ) ) otherlv_2= '-' ( (lv_timeTo_3_0= ruleTime ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:357:2: ( ( (lv_day_0_1= 'monday' | lv_day_0_2= 'tuesday' | lv_day_0_3= 'wednesday' | lv_day_0_4= 'thursday' | lv_day_0_5= 'friday' | lv_day_0_6= 'saturday' | lv_day_0_7= 'sunday' ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:358:1: ( (lv_day_0_1= 'monday' | lv_day_0_2= 'tuesday' | lv_day_0_3= 'wednesday' | lv_day_0_4= 'thursday' | lv_day_0_5= 'friday' | lv_day_0_6= 'saturday' | lv_day_0_7= 'sunday' ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:358:1: ( (lv_day_0_1= 'monday' | lv_day_0_2= 'tuesday' | lv_day_0_3= 'wednesday' | lv_day_0_4= 'thursday' | lv_day_0_5= 'friday' | lv_day_0_6= 'saturday' | lv_day_0_7= 'sunday' ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:359:1: (lv_day_0_1= 'monday' | lv_day_0_2= 'tuesday' | lv_day_0_3= 'wednesday' | lv_day_0_4= 'thursday' | lv_day_0_5= 'friday' | lv_day_0_6= 'saturday' | lv_day_0_7= 'sunday' )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:359:1: (lv_day_0_1= 'monday' | lv_day_0_2= 'tuesday' | lv_day_0_3= 'wednesday' | lv_day_0_4= 'thursday' | lv_day_0_5= 'friday' | lv_day_0_6= 'saturday' | lv_day_0_7= 'sunday' )
            int alt6=7;
            switch ( input.LA(1) ) {
            case 15:
                {
                alt6=1;
                }
                break;
            case 16:
                {
                alt6=2;
                }
                break;
            case 17:
                {
                alt6=3;
                }
                break;
            case 18:
                {
                alt6=4;
                }
                break;
            case 19:
                {
                alt6=5;
                }
                break;
            case 20:
                {
                alt6=6;
                }
                break;
            case 21:
                {
                alt6=7;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 6, 0, input);

                throw nvae;
            }

            switch (alt6) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:360:3: lv_day_0_1= 'monday'
                    {
                    lv_day_0_1=(Token)match(input,15,FOLLOW_15_in_ruleWeekDayTime727); 

                            newLeafNode(lv_day_0_1, grammarAccess.getWeekDayTimeAccess().getDayMondayKeyword_0_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getWeekDayTimeRule());
                    	        }
                           		setWithLastConsumed(current, "day", lv_day_0_1, null);
                    	    

                    }
                    break;
                case 2 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:372:8: lv_day_0_2= 'tuesday'
                    {
                    lv_day_0_2=(Token)match(input,16,FOLLOW_16_in_ruleWeekDayTime756); 

                            newLeafNode(lv_day_0_2, grammarAccess.getWeekDayTimeAccess().getDayTuesdayKeyword_0_0_1());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getWeekDayTimeRule());
                    	        }
                           		setWithLastConsumed(current, "day", lv_day_0_2, null);
                    	    

                    }
                    break;
                case 3 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:384:8: lv_day_0_3= 'wednesday'
                    {
                    lv_day_0_3=(Token)match(input,17,FOLLOW_17_in_ruleWeekDayTime785); 

                            newLeafNode(lv_day_0_3, grammarAccess.getWeekDayTimeAccess().getDayWednesdayKeyword_0_0_2());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getWeekDayTimeRule());
                    	        }
                           		setWithLastConsumed(current, "day", lv_day_0_3, null);
                    	    

                    }
                    break;
                case 4 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:396:8: lv_day_0_4= 'thursday'
                    {
                    lv_day_0_4=(Token)match(input,18,FOLLOW_18_in_ruleWeekDayTime814); 

                            newLeafNode(lv_day_0_4, grammarAccess.getWeekDayTimeAccess().getDayThursdayKeyword_0_0_3());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getWeekDayTimeRule());
                    	        }
                           		setWithLastConsumed(current, "day", lv_day_0_4, null);
                    	    

                    }
                    break;
                case 5 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:408:8: lv_day_0_5= 'friday'
                    {
                    lv_day_0_5=(Token)match(input,19,FOLLOW_19_in_ruleWeekDayTime843); 

                            newLeafNode(lv_day_0_5, grammarAccess.getWeekDayTimeAccess().getDayFridayKeyword_0_0_4());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getWeekDayTimeRule());
                    	        }
                           		setWithLastConsumed(current, "day", lv_day_0_5, null);
                    	    

                    }
                    break;
                case 6 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:420:8: lv_day_0_6= 'saturday'
                    {
                    lv_day_0_6=(Token)match(input,20,FOLLOW_20_in_ruleWeekDayTime872); 

                            newLeafNode(lv_day_0_6, grammarAccess.getWeekDayTimeAccess().getDaySaturdayKeyword_0_0_5());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getWeekDayTimeRule());
                    	        }
                           		setWithLastConsumed(current, "day", lv_day_0_6, null);
                    	    

                    }
                    break;
                case 7 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:432:8: lv_day_0_7= 'sunday'
                    {
                    lv_day_0_7=(Token)match(input,21,FOLLOW_21_in_ruleWeekDayTime901); 

                            newLeafNode(lv_day_0_7, grammarAccess.getWeekDayTimeAccess().getDaySundayKeyword_0_0_6());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getWeekDayTimeRule());
                    	        }
                           		setWithLastConsumed(current, "day", lv_day_0_7, null);
                    	    

                    }
                    break;

            }


            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:447:2: ( (lv_timeFrom_1_0= ruleTime ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:448:1: (lv_timeFrom_1_0= ruleTime )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:448:1: (lv_timeFrom_1_0= ruleTime )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:449:3: lv_timeFrom_1_0= ruleTime
            {
             
            	        newCompositeNode(grammarAccess.getWeekDayTimeAccess().getTimeFromTimeParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleTime_in_ruleWeekDayTime938);
            lv_timeFrom_1_0=ruleTime();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getWeekDayTimeRule());
            	        }
                   		set(
                   			current, 
                   			"timeFrom",
                    		lv_timeFrom_1_0, 
                    		"Time");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleWeekDayTime950); 

                	newLeafNode(otherlv_2, grammarAccess.getWeekDayTimeAccess().getHyphenMinusKeyword_2());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:469:1: ( (lv_timeTo_3_0= ruleTime ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:470:1: (lv_timeTo_3_0= ruleTime )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:470:1: (lv_timeTo_3_0= ruleTime )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:471:3: lv_timeTo_3_0= ruleTime
            {
             
            	        newCompositeNode(grammarAccess.getWeekDayTimeAccess().getTimeToTimeParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleTime_in_ruleWeekDayTime971);
            lv_timeTo_3_0=ruleTime();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getWeekDayTimeRule());
            	        }
                   		set(
                   			current, 
                   			"timeTo",
                    		lv_timeTo_3_0, 
                    		"Time");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleWeekDayTime"


    // $ANTLR start "entryRuleTime"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:495:1: entryRuleTime returns [EObject current=null] : iv_ruleTime= ruleTime EOF ;
    public final EObject entryRuleTime() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTime = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:496:2: (iv_ruleTime= ruleTime EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:497:2: iv_ruleTime= ruleTime EOF
            {
             newCompositeNode(grammarAccess.getTimeRule()); 
            pushFollow(FOLLOW_ruleTime_in_entryRuleTime1007);
            iv_ruleTime=ruleTime();

            state._fsp--;

             current =iv_ruleTime; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTime1017); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTime"


    // $ANTLR start "ruleTime"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:504:1: ruleTime returns [EObject current=null] : ( ( (lv_hours_0_0= RULE_INT ) ) otherlv_1= ':' ( (lv_minutes_2_0= RULE_INT ) ) ) ;
    public final EObject ruleTime() throws RecognitionException {
        EObject current = null;

        Token lv_hours_0_0=null;
        Token otherlv_1=null;
        Token lv_minutes_2_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:507:28: ( ( ( (lv_hours_0_0= RULE_INT ) ) otherlv_1= ':' ( (lv_minutes_2_0= RULE_INT ) ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:508:1: ( ( (lv_hours_0_0= RULE_INT ) ) otherlv_1= ':' ( (lv_minutes_2_0= RULE_INT ) ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:508:1: ( ( (lv_hours_0_0= RULE_INT ) ) otherlv_1= ':' ( (lv_minutes_2_0= RULE_INT ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:508:2: ( (lv_hours_0_0= RULE_INT ) ) otherlv_1= ':' ( (lv_minutes_2_0= RULE_INT ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:508:2: ( (lv_hours_0_0= RULE_INT ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:509:1: (lv_hours_0_0= RULE_INT )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:509:1: (lv_hours_0_0= RULE_INT )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:510:3: lv_hours_0_0= RULE_INT
            {
            lv_hours_0_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleTime1059); 

            			newLeafNode(lv_hours_0_0, grammarAccess.getTimeAccess().getHoursINTTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTimeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"hours",
                    		lv_hours_0_0, 
                    		"INT");
            	    

            }


            }

            otherlv_1=(Token)match(input,22,FOLLOW_22_in_ruleTime1076); 

                	newLeafNode(otherlv_1, grammarAccess.getTimeAccess().getColonKeyword_1());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:530:1: ( (lv_minutes_2_0= RULE_INT ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:531:1: (lv_minutes_2_0= RULE_INT )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:531:1: (lv_minutes_2_0= RULE_INT )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:532:3: lv_minutes_2_0= RULE_INT
            {
            lv_minutes_2_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleTime1093); 

            			newLeafNode(lv_minutes_2_0, grammarAccess.getTimeAccess().getMinutesINTTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTimeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"minutes",
                    		lv_minutes_2_0, 
                    		"INT");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTime"


    // $ANTLR start "entryRuleEvent"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:556:1: entryRuleEvent returns [EObject current=null] : iv_ruleEvent= ruleEvent EOF ;
    public final EObject entryRuleEvent() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEvent = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:557:2: (iv_ruleEvent= ruleEvent EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:558:2: iv_ruleEvent= ruleEvent EOF
            {
             newCompositeNode(grammarAccess.getEventRule()); 
            pushFollow(FOLLOW_ruleEvent_in_entryRuleEvent1134);
            iv_ruleEvent=ruleEvent();

            state._fsp--;

             current =iv_ruleEvent; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEvent1144); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEvent"


    // $ANTLR start "ruleEvent"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:565:1: ruleEvent returns [EObject current=null] : (otherlv_0= 'event' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_hasAction_2_0= '-> action' ) ) ( (lv_actionType_3_0= ruleActionType ) ) )? otherlv_4= 'if' ( (lv_events_5_0= ruleEventType ) )* ) ;
    public final EObject ruleEvent() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token lv_hasAction_2_0=null;
        Token otherlv_4=null;
        EObject lv_actionType_3_0 = null;

        EObject lv_events_5_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:568:28: ( (otherlv_0= 'event' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_hasAction_2_0= '-> action' ) ) ( (lv_actionType_3_0= ruleActionType ) ) )? otherlv_4= 'if' ( (lv_events_5_0= ruleEventType ) )* ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:569:1: (otherlv_0= 'event' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_hasAction_2_0= '-> action' ) ) ( (lv_actionType_3_0= ruleActionType ) ) )? otherlv_4= 'if' ( (lv_events_5_0= ruleEventType ) )* )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:569:1: (otherlv_0= 'event' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_hasAction_2_0= '-> action' ) ) ( (lv_actionType_3_0= ruleActionType ) ) )? otherlv_4= 'if' ( (lv_events_5_0= ruleEventType ) )* )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:569:3: otherlv_0= 'event' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_hasAction_2_0= '-> action' ) ) ( (lv_actionType_3_0= ruleActionType ) ) )? otherlv_4= 'if' ( (lv_events_5_0= ruleEventType ) )*
            {
            otherlv_0=(Token)match(input,23,FOLLOW_23_in_ruleEvent1181); 

                	newLeafNode(otherlv_0, grammarAccess.getEventAccess().getEventKeyword_0());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:573:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:574:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:574:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:575:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEvent1198); 

            			newLeafNode(lv_name_1_0, grammarAccess.getEventAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEventRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:591:2: ( ( (lv_hasAction_2_0= '-> action' ) ) ( (lv_actionType_3_0= ruleActionType ) ) )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==24) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:591:3: ( (lv_hasAction_2_0= '-> action' ) ) ( (lv_actionType_3_0= ruleActionType ) )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:591:3: ( (lv_hasAction_2_0= '-> action' ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:592:1: (lv_hasAction_2_0= '-> action' )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:592:1: (lv_hasAction_2_0= '-> action' )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:593:3: lv_hasAction_2_0= '-> action'
                    {
                    lv_hasAction_2_0=(Token)match(input,24,FOLLOW_24_in_ruleEvent1222); 

                            newLeafNode(lv_hasAction_2_0, grammarAccess.getEventAccess().getHasActionActionKeyword_2_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getEventRule());
                    	        }
                           		setWithLastConsumed(current, "hasAction", true, "-> action");
                    	    

                    }


                    }

                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:606:2: ( (lv_actionType_3_0= ruleActionType ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:607:1: (lv_actionType_3_0= ruleActionType )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:607:1: (lv_actionType_3_0= ruleActionType )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:608:3: lv_actionType_3_0= ruleActionType
                    {
                     
                    	        newCompositeNode(grammarAccess.getEventAccess().getActionTypeActionTypeParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleActionType_in_ruleEvent1256);
                    lv_actionType_3_0=ruleActionType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getEventRule());
                    	        }
                           		set(
                           			current, 
                           			"actionType",
                            		lv_actionType_3_0, 
                            		"ActionType");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,25,FOLLOW_25_in_ruleEvent1270); 

                	newLeafNode(otherlv_4, grammarAccess.getEventAccess().getIfKeyword_3());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:628:1: ( (lv_events_5_0= ruleEventType ) )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( (LA8_0==26||(LA8_0>=31 && LA8_0<=32)||(LA8_0>=34 && LA8_0<=35)) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:629:1: (lv_events_5_0= ruleEventType )
            	    {
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:629:1: (lv_events_5_0= ruleEventType )
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:630:3: lv_events_5_0= ruleEventType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getEventAccess().getEventsEventTypeParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleEventType_in_ruleEvent1291);
            	    lv_events_5_0=ruleEventType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getEventRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"events",
            	            		lv_events_5_0, 
            	            		"EventType");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop8;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEvent"


    // $ANTLR start "entryRuleEventType"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:654:1: entryRuleEventType returns [EObject current=null] : iv_ruleEventType= ruleEventType EOF ;
    public final EObject entryRuleEventType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEventType = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:655:2: (iv_ruleEventType= ruleEventType EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:656:2: iv_ruleEventType= ruleEventType EOF
            {
             newCompositeNode(grammarAccess.getEventTypeRule()); 
            pushFollow(FOLLOW_ruleEventType_in_entryRuleEventType1328);
            iv_ruleEventType=ruleEventType();

            state._fsp--;

             current =iv_ruleEventType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEventType1338); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEventType"


    // $ANTLR start "ruleEventType"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:663:1: ruleEventType returns [EObject current=null] : (this_ConditionalEvent_0= ruleConditionalEvent | this_BasicEvent_1= ruleBasicEvent ) ;
    public final EObject ruleEventType() throws RecognitionException {
        EObject current = null;

        EObject this_ConditionalEvent_0 = null;

        EObject this_BasicEvent_1 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:666:28: ( (this_ConditionalEvent_0= ruleConditionalEvent | this_BasicEvent_1= ruleBasicEvent ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:667:1: (this_ConditionalEvent_0= ruleConditionalEvent | this_BasicEvent_1= ruleBasicEvent )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:667:1: (this_ConditionalEvent_0= ruleConditionalEvent | this_BasicEvent_1= ruleBasicEvent )
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==26) ) {
                alt9=1;
            }
            else if ( ((LA9_0>=31 && LA9_0<=32)||(LA9_0>=34 && LA9_0<=35)) ) {
                alt9=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 9, 0, input);

                throw nvae;
            }
            switch (alt9) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:668:5: this_ConditionalEvent_0= ruleConditionalEvent
                    {
                     
                            newCompositeNode(grammarAccess.getEventTypeAccess().getConditionalEventParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleConditionalEvent_in_ruleEventType1385);
                    this_ConditionalEvent_0=ruleConditionalEvent();

                    state._fsp--;

                     
                            current = this_ConditionalEvent_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:678:5: this_BasicEvent_1= ruleBasicEvent
                    {
                     
                            newCompositeNode(grammarAccess.getEventTypeAccess().getBasicEventParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleBasicEvent_in_ruleEventType1412);
                    this_BasicEvent_1=ruleBasicEvent();

                    state._fsp--;

                     
                            current = this_BasicEvent_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEventType"


    // $ANTLR start "entryRuleBasicEvent"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:694:1: entryRuleBasicEvent returns [EObject current=null] : iv_ruleBasicEvent= ruleBasicEvent EOF ;
    public final EObject entryRuleBasicEvent() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBasicEvent = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:695:2: (iv_ruleBasicEvent= ruleBasicEvent EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:696:2: iv_ruleBasicEvent= ruleBasicEvent EOF
            {
             newCompositeNode(grammarAccess.getBasicEventRule()); 
            pushFollow(FOLLOW_ruleBasicEvent_in_entryRuleBasicEvent1447);
            iv_ruleBasicEvent=ruleBasicEvent();

            state._fsp--;

             current =iv_ruleBasicEvent; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBasicEvent1457); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBasicEvent"


    // $ANTLR start "ruleBasicEvent"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:703:1: ruleBasicEvent returns [EObject current=null] : (this_RoomEvent_0= ruleRoomEvent | this_CloseBy_1= ruleCloseBy | this_TransitionArea_2= ruleTransitionArea ) ;
    public final EObject ruleBasicEvent() throws RecognitionException {
        EObject current = null;

        EObject this_RoomEvent_0 = null;

        EObject this_CloseBy_1 = null;

        EObject this_TransitionArea_2 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:706:28: ( (this_RoomEvent_0= ruleRoomEvent | this_CloseBy_1= ruleCloseBy | this_TransitionArea_2= ruleTransitionArea ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:707:1: (this_RoomEvent_0= ruleRoomEvent | this_CloseBy_1= ruleCloseBy | this_TransitionArea_2= ruleTransitionArea )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:707:1: (this_RoomEvent_0= ruleRoomEvent | this_CloseBy_1= ruleCloseBy | this_TransitionArea_2= ruleTransitionArea )
            int alt10=3;
            switch ( input.LA(1) ) {
            case 31:
            case 32:
                {
                alt10=1;
                }
                break;
            case 34:
                {
                alt10=2;
                }
                break;
            case 35:
                {
                alt10=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 10, 0, input);

                throw nvae;
            }

            switch (alt10) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:708:5: this_RoomEvent_0= ruleRoomEvent
                    {
                     
                            newCompositeNode(grammarAccess.getBasicEventAccess().getRoomEventParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleRoomEvent_in_ruleBasicEvent1504);
                    this_RoomEvent_0=ruleRoomEvent();

                    state._fsp--;

                     
                            current = this_RoomEvent_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:718:5: this_CloseBy_1= ruleCloseBy
                    {
                     
                            newCompositeNode(grammarAccess.getBasicEventAccess().getCloseByParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleCloseBy_in_ruleBasicEvent1531);
                    this_CloseBy_1=ruleCloseBy();

                    state._fsp--;

                     
                            current = this_CloseBy_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:728:5: this_TransitionArea_2= ruleTransitionArea
                    {
                     
                            newCompositeNode(grammarAccess.getBasicEventAccess().getTransitionAreaParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleTransitionArea_in_ruleBasicEvent1558);
                    this_TransitionArea_2=ruleTransitionArea();

                    state._fsp--;

                     
                            current = this_TransitionArea_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBasicEvent"


    // $ANTLR start "entryRuleConditionalEvent"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:744:1: entryRuleConditionalEvent returns [EObject current=null] : iv_ruleConditionalEvent= ruleConditionalEvent EOF ;
    public final EObject entryRuleConditionalEvent() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConditionalEvent = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:745:2: (iv_ruleConditionalEvent= ruleConditionalEvent EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:746:2: iv_ruleConditionalEvent= ruleConditionalEvent EOF
            {
             newCompositeNode(grammarAccess.getConditionalEventRule()); 
            pushFollow(FOLLOW_ruleConditionalEvent_in_entryRuleConditionalEvent1593);
            iv_ruleConditionalEvent=ruleConditionalEvent();

            state._fsp--;

             current =iv_ruleConditionalEvent; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConditionalEvent1603); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConditionalEvent"


    // $ANTLR start "ruleConditionalEvent"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:753:1: ruleConditionalEvent returns [EObject current=null] : (otherlv_0= '(' ( (lv_basic_1_0= ruleBasicEvent ) ) ( ( (lv_logic_2_1= 'or' | lv_logic_2_2= 'and' | lv_logic_2_3= 'andnot' ) ) ) ( (lv_nested_3_0= ruleEventType ) ) otherlv_4= ')' ) ;
    public final EObject ruleConditionalEvent() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_logic_2_1=null;
        Token lv_logic_2_2=null;
        Token lv_logic_2_3=null;
        Token otherlv_4=null;
        EObject lv_basic_1_0 = null;

        EObject lv_nested_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:756:28: ( (otherlv_0= '(' ( (lv_basic_1_0= ruleBasicEvent ) ) ( ( (lv_logic_2_1= 'or' | lv_logic_2_2= 'and' | lv_logic_2_3= 'andnot' ) ) ) ( (lv_nested_3_0= ruleEventType ) ) otherlv_4= ')' ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:757:1: (otherlv_0= '(' ( (lv_basic_1_0= ruleBasicEvent ) ) ( ( (lv_logic_2_1= 'or' | lv_logic_2_2= 'and' | lv_logic_2_3= 'andnot' ) ) ) ( (lv_nested_3_0= ruleEventType ) ) otherlv_4= ')' )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:757:1: (otherlv_0= '(' ( (lv_basic_1_0= ruleBasicEvent ) ) ( ( (lv_logic_2_1= 'or' | lv_logic_2_2= 'and' | lv_logic_2_3= 'andnot' ) ) ) ( (lv_nested_3_0= ruleEventType ) ) otherlv_4= ')' )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:757:3: otherlv_0= '(' ( (lv_basic_1_0= ruleBasicEvent ) ) ( ( (lv_logic_2_1= 'or' | lv_logic_2_2= 'and' | lv_logic_2_3= 'andnot' ) ) ) ( (lv_nested_3_0= ruleEventType ) ) otherlv_4= ')'
            {
            otherlv_0=(Token)match(input,26,FOLLOW_26_in_ruleConditionalEvent1640); 

                	newLeafNode(otherlv_0, grammarAccess.getConditionalEventAccess().getLeftParenthesisKeyword_0());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:761:1: ( (lv_basic_1_0= ruleBasicEvent ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:762:1: (lv_basic_1_0= ruleBasicEvent )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:762:1: (lv_basic_1_0= ruleBasicEvent )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:763:3: lv_basic_1_0= ruleBasicEvent
            {
             
            	        newCompositeNode(grammarAccess.getConditionalEventAccess().getBasicBasicEventParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleBasicEvent_in_ruleConditionalEvent1661);
            lv_basic_1_0=ruleBasicEvent();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getConditionalEventRule());
            	        }
                   		set(
                   			current, 
                   			"basic",
                    		lv_basic_1_0, 
                    		"BasicEvent");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:779:2: ( ( (lv_logic_2_1= 'or' | lv_logic_2_2= 'and' | lv_logic_2_3= 'andnot' ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:780:1: ( (lv_logic_2_1= 'or' | lv_logic_2_2= 'and' | lv_logic_2_3= 'andnot' ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:780:1: ( (lv_logic_2_1= 'or' | lv_logic_2_2= 'and' | lv_logic_2_3= 'andnot' ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:781:1: (lv_logic_2_1= 'or' | lv_logic_2_2= 'and' | lv_logic_2_3= 'andnot' )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:781:1: (lv_logic_2_1= 'or' | lv_logic_2_2= 'and' | lv_logic_2_3= 'andnot' )
            int alt11=3;
            switch ( input.LA(1) ) {
            case 27:
                {
                alt11=1;
                }
                break;
            case 28:
                {
                alt11=2;
                }
                break;
            case 29:
                {
                alt11=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;
            }

            switch (alt11) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:782:3: lv_logic_2_1= 'or'
                    {
                    lv_logic_2_1=(Token)match(input,27,FOLLOW_27_in_ruleConditionalEvent1681); 

                            newLeafNode(lv_logic_2_1, grammarAccess.getConditionalEventAccess().getLogicOrKeyword_2_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getConditionalEventRule());
                    	        }
                           		setWithLastConsumed(current, "logic", lv_logic_2_1, null);
                    	    

                    }
                    break;
                case 2 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:794:8: lv_logic_2_2= 'and'
                    {
                    lv_logic_2_2=(Token)match(input,28,FOLLOW_28_in_ruleConditionalEvent1710); 

                            newLeafNode(lv_logic_2_2, grammarAccess.getConditionalEventAccess().getLogicAndKeyword_2_0_1());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getConditionalEventRule());
                    	        }
                           		setWithLastConsumed(current, "logic", lv_logic_2_2, null);
                    	    

                    }
                    break;
                case 3 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:806:8: lv_logic_2_3= 'andnot'
                    {
                    lv_logic_2_3=(Token)match(input,29,FOLLOW_29_in_ruleConditionalEvent1739); 

                            newLeafNode(lv_logic_2_3, grammarAccess.getConditionalEventAccess().getLogicAndnotKeyword_2_0_2());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getConditionalEventRule());
                    	        }
                           		setWithLastConsumed(current, "logic", lv_logic_2_3, null);
                    	    

                    }
                    break;

            }


            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:821:2: ( (lv_nested_3_0= ruleEventType ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:822:1: (lv_nested_3_0= ruleEventType )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:822:1: (lv_nested_3_0= ruleEventType )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:823:3: lv_nested_3_0= ruleEventType
            {
             
            	        newCompositeNode(grammarAccess.getConditionalEventAccess().getNestedEventTypeParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleEventType_in_ruleConditionalEvent1776);
            lv_nested_3_0=ruleEventType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getConditionalEventRule());
            	        }
                   		set(
                   			current, 
                   			"nested",
                    		lv_nested_3_0, 
                    		"EventType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_4=(Token)match(input,30,FOLLOW_30_in_ruleConditionalEvent1788); 

                	newLeafNode(otherlv_4, grammarAccess.getConditionalEventAccess().getRightParenthesisKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConditionalEvent"


    // $ANTLR start "entryRuleRoomEvent"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:851:1: entryRuleRoomEvent returns [EObject current=null] : iv_ruleRoomEvent= ruleRoomEvent EOF ;
    public final EObject entryRuleRoomEvent() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRoomEvent = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:852:2: (iv_ruleRoomEvent= ruleRoomEvent EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:853:2: iv_ruleRoomEvent= ruleRoomEvent EOF
            {
             newCompositeNode(grammarAccess.getRoomEventRule()); 
            pushFollow(FOLLOW_ruleRoomEvent_in_entryRuleRoomEvent1824);
            iv_ruleRoomEvent=ruleRoomEvent();

            state._fsp--;

             current =iv_ruleRoomEvent; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRoomEvent1834); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRoomEvent"


    // $ANTLR start "ruleRoomEvent"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:860:1: ruleRoomEvent returns [EObject current=null] : ( ( ( (lv_eventType_0_1= 'entering' | lv_eventType_0_2= 'leaving' ) ) ) ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_hasTime_2_0= 'time=' ) ) ( (otherlv_3= RULE_ID ) ) )? ) ;
    public final EObject ruleRoomEvent() throws RecognitionException {
        EObject current = null;

        Token lv_eventType_0_1=null;
        Token lv_eventType_0_2=null;
        Token lv_name_1_0=null;
        Token lv_hasTime_2_0=null;
        Token otherlv_3=null;

         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:863:28: ( ( ( ( (lv_eventType_0_1= 'entering' | lv_eventType_0_2= 'leaving' ) ) ) ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_hasTime_2_0= 'time=' ) ) ( (otherlv_3= RULE_ID ) ) )? ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:864:1: ( ( ( (lv_eventType_0_1= 'entering' | lv_eventType_0_2= 'leaving' ) ) ) ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_hasTime_2_0= 'time=' ) ) ( (otherlv_3= RULE_ID ) ) )? )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:864:1: ( ( ( (lv_eventType_0_1= 'entering' | lv_eventType_0_2= 'leaving' ) ) ) ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_hasTime_2_0= 'time=' ) ) ( (otherlv_3= RULE_ID ) ) )? )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:864:2: ( ( (lv_eventType_0_1= 'entering' | lv_eventType_0_2= 'leaving' ) ) ) ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_hasTime_2_0= 'time=' ) ) ( (otherlv_3= RULE_ID ) ) )?
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:864:2: ( ( (lv_eventType_0_1= 'entering' | lv_eventType_0_2= 'leaving' ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:865:1: ( (lv_eventType_0_1= 'entering' | lv_eventType_0_2= 'leaving' ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:865:1: ( (lv_eventType_0_1= 'entering' | lv_eventType_0_2= 'leaving' ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:866:1: (lv_eventType_0_1= 'entering' | lv_eventType_0_2= 'leaving' )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:866:1: (lv_eventType_0_1= 'entering' | lv_eventType_0_2= 'leaving' )
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==31) ) {
                alt12=1;
            }
            else if ( (LA12_0==32) ) {
                alt12=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 12, 0, input);

                throw nvae;
            }
            switch (alt12) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:867:3: lv_eventType_0_1= 'entering'
                    {
                    lv_eventType_0_1=(Token)match(input,31,FOLLOW_31_in_ruleRoomEvent1879); 

                            newLeafNode(lv_eventType_0_1, grammarAccess.getRoomEventAccess().getEventTypeEnteringKeyword_0_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getRoomEventRule());
                    	        }
                           		setWithLastConsumed(current, "eventType", lv_eventType_0_1, null);
                    	    

                    }
                    break;
                case 2 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:879:8: lv_eventType_0_2= 'leaving'
                    {
                    lv_eventType_0_2=(Token)match(input,32,FOLLOW_32_in_ruleRoomEvent1908); 

                            newLeafNode(lv_eventType_0_2, grammarAccess.getRoomEventAccess().getEventTypeLeavingKeyword_0_0_1());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getRoomEventRule());
                    	        }
                           		setWithLastConsumed(current, "eventType", lv_eventType_0_2, null);
                    	    

                    }
                    break;

            }


            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:894:2: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:895:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:895:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:896:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRoomEvent1941); 

            			newLeafNode(lv_name_1_0, grammarAccess.getRoomEventAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRoomEventRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:912:2: ( ( (lv_hasTime_2_0= 'time=' ) ) ( (otherlv_3= RULE_ID ) ) )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==33) ) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:912:3: ( (lv_hasTime_2_0= 'time=' ) ) ( (otherlv_3= RULE_ID ) )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:912:3: ( (lv_hasTime_2_0= 'time=' ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:913:1: (lv_hasTime_2_0= 'time=' )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:913:1: (lv_hasTime_2_0= 'time=' )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:914:3: lv_hasTime_2_0= 'time='
                    {
                    lv_hasTime_2_0=(Token)match(input,33,FOLLOW_33_in_ruleRoomEvent1965); 

                            newLeafNode(lv_hasTime_2_0, grammarAccess.getRoomEventAccess().getHasTimeTimeKeyword_2_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getRoomEventRule());
                    	        }
                           		setWithLastConsumed(current, "hasTime", true, "time=");
                    	    

                    }


                    }

                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:927:2: ( (otherlv_3= RULE_ID ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:928:1: (otherlv_3= RULE_ID )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:928:1: (otherlv_3= RULE_ID )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:929:3: otherlv_3= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getRoomEventRule());
                    	        }
                            
                    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRoomEvent1998); 

                    		newLeafNode(otherlv_3, grammarAccess.getRoomEventAccess().getTimeTimeTableCrossReference_2_1_0()); 
                    	

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRoomEvent"


    // $ANTLR start "entryRuleCloseBy"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:948:1: entryRuleCloseBy returns [EObject current=null] : iv_ruleCloseBy= ruleCloseBy EOF ;
    public final EObject entryRuleCloseBy() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCloseBy = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:949:2: (iv_ruleCloseBy= ruleCloseBy EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:950:2: iv_ruleCloseBy= ruleCloseBy EOF
            {
             newCompositeNode(grammarAccess.getCloseByRule()); 
            pushFollow(FOLLOW_ruleCloseBy_in_entryRuleCloseBy2036);
            iv_ruleCloseBy=ruleCloseBy();

            state._fsp--;

             current =iv_ruleCloseBy; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCloseBy2046); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCloseBy"


    // $ANTLR start "ruleCloseBy"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:957:1: ruleCloseBy returns [EObject current=null] : (otherlv_0= 'closeby' ( (lv_name_1_0= RULE_ID ) ) ( (lv_attributes_2_0= ruleEventAttributes ) )* ) ;
    public final EObject ruleCloseBy() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        EObject lv_attributes_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:960:28: ( (otherlv_0= 'closeby' ( (lv_name_1_0= RULE_ID ) ) ( (lv_attributes_2_0= ruleEventAttributes ) )* ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:961:1: (otherlv_0= 'closeby' ( (lv_name_1_0= RULE_ID ) ) ( (lv_attributes_2_0= ruleEventAttributes ) )* )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:961:1: (otherlv_0= 'closeby' ( (lv_name_1_0= RULE_ID ) ) ( (lv_attributes_2_0= ruleEventAttributes ) )* )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:961:3: otherlv_0= 'closeby' ( (lv_name_1_0= RULE_ID ) ) ( (lv_attributes_2_0= ruleEventAttributes ) )*
            {
            otherlv_0=(Token)match(input,34,FOLLOW_34_in_ruleCloseBy2083); 

                	newLeafNode(otherlv_0, grammarAccess.getCloseByAccess().getClosebyKeyword_0());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:965:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:966:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:966:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:967:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCloseBy2100); 

            			newLeafNode(lv_name_1_0, grammarAccess.getCloseByAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getCloseByRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:983:2: ( (lv_attributes_2_0= ruleEventAttributes ) )*
            loop14:
            do {
                int alt14=2;
                int LA14_0 = input.LA(1);

                if ( (LA14_0==33||(LA14_0>=36 && LA14_0<=37)) ) {
                    alt14=1;
                }


                switch (alt14) {
            	case 1 :
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:984:1: (lv_attributes_2_0= ruleEventAttributes )
            	    {
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:984:1: (lv_attributes_2_0= ruleEventAttributes )
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:985:3: lv_attributes_2_0= ruleEventAttributes
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getCloseByAccess().getAttributesEventAttributesParserRuleCall_2_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleEventAttributes_in_ruleCloseBy2126);
            	    lv_attributes_2_0=ruleEventAttributes();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getCloseByRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"attributes",
            	            		lv_attributes_2_0, 
            	            		"EventAttributes");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop14;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCloseBy"


    // $ANTLR start "entryRuleTransitionArea"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1009:1: entryRuleTransitionArea returns [EObject current=null] : iv_ruleTransitionArea= ruleTransitionArea EOF ;
    public final EObject entryRuleTransitionArea() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTransitionArea = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1010:2: (iv_ruleTransitionArea= ruleTransitionArea EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1011:2: iv_ruleTransitionArea= ruleTransitionArea EOF
            {
             newCompositeNode(grammarAccess.getTransitionAreaRule()); 
            pushFollow(FOLLOW_ruleTransitionArea_in_entryRuleTransitionArea2163);
            iv_ruleTransitionArea=ruleTransitionArea();

            state._fsp--;

             current =iv_ruleTransitionArea; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTransitionArea2173); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTransitionArea"


    // $ANTLR start "ruleTransitionArea"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1018:1: ruleTransitionArea returns [EObject current=null] : (otherlv_0= 'transition' ( (lv_from_1_0= RULE_ID ) ) ( (lv_attributesFrom_2_0= ruleEventAttributes ) )* otherlv_3= 'to' ( (lv_to_4_0= RULE_ID ) ) ( (lv_attributesTo_5_0= ruleEventAttributes ) )* ) ;
    public final EObject ruleTransitionArea() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_from_1_0=null;
        Token otherlv_3=null;
        Token lv_to_4_0=null;
        EObject lv_attributesFrom_2_0 = null;

        EObject lv_attributesTo_5_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1021:28: ( (otherlv_0= 'transition' ( (lv_from_1_0= RULE_ID ) ) ( (lv_attributesFrom_2_0= ruleEventAttributes ) )* otherlv_3= 'to' ( (lv_to_4_0= RULE_ID ) ) ( (lv_attributesTo_5_0= ruleEventAttributes ) )* ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1022:1: (otherlv_0= 'transition' ( (lv_from_1_0= RULE_ID ) ) ( (lv_attributesFrom_2_0= ruleEventAttributes ) )* otherlv_3= 'to' ( (lv_to_4_0= RULE_ID ) ) ( (lv_attributesTo_5_0= ruleEventAttributes ) )* )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1022:1: (otherlv_0= 'transition' ( (lv_from_1_0= RULE_ID ) ) ( (lv_attributesFrom_2_0= ruleEventAttributes ) )* otherlv_3= 'to' ( (lv_to_4_0= RULE_ID ) ) ( (lv_attributesTo_5_0= ruleEventAttributes ) )* )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1022:3: otherlv_0= 'transition' ( (lv_from_1_0= RULE_ID ) ) ( (lv_attributesFrom_2_0= ruleEventAttributes ) )* otherlv_3= 'to' ( (lv_to_4_0= RULE_ID ) ) ( (lv_attributesTo_5_0= ruleEventAttributes ) )*
            {
            otherlv_0=(Token)match(input,35,FOLLOW_35_in_ruleTransitionArea2210); 

                	newLeafNode(otherlv_0, grammarAccess.getTransitionAreaAccess().getTransitionKeyword_0());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1026:1: ( (lv_from_1_0= RULE_ID ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1027:1: (lv_from_1_0= RULE_ID )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1027:1: (lv_from_1_0= RULE_ID )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1028:3: lv_from_1_0= RULE_ID
            {
            lv_from_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTransitionArea2227); 

            			newLeafNode(lv_from_1_0, grammarAccess.getTransitionAreaAccess().getFromIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTransitionAreaRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"from",
                    		lv_from_1_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1044:2: ( (lv_attributesFrom_2_0= ruleEventAttributes ) )*
            loop15:
            do {
                int alt15=2;
                int LA15_0 = input.LA(1);

                if ( (LA15_0==33||(LA15_0>=36 && LA15_0<=37)) ) {
                    alt15=1;
                }


                switch (alt15) {
            	case 1 :
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1045:1: (lv_attributesFrom_2_0= ruleEventAttributes )
            	    {
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1045:1: (lv_attributesFrom_2_0= ruleEventAttributes )
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1046:3: lv_attributesFrom_2_0= ruleEventAttributes
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getTransitionAreaAccess().getAttributesFromEventAttributesParserRuleCall_2_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleEventAttributes_in_ruleTransitionArea2253);
            	    lv_attributesFrom_2_0=ruleEventAttributes();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getTransitionAreaRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"attributesFrom",
            	            		lv_attributesFrom_2_0, 
            	            		"EventAttributes");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop15;
                }
            } while (true);

            otherlv_3=(Token)match(input,13,FOLLOW_13_in_ruleTransitionArea2266); 

                	newLeafNode(otherlv_3, grammarAccess.getTransitionAreaAccess().getToKeyword_3());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1066:1: ( (lv_to_4_0= RULE_ID ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1067:1: (lv_to_4_0= RULE_ID )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1067:1: (lv_to_4_0= RULE_ID )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1068:3: lv_to_4_0= RULE_ID
            {
            lv_to_4_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTransitionArea2283); 

            			newLeafNode(lv_to_4_0, grammarAccess.getTransitionAreaAccess().getToIDTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTransitionAreaRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"to",
                    		lv_to_4_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1084:2: ( (lv_attributesTo_5_0= ruleEventAttributes ) )*
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0==33||(LA16_0>=36 && LA16_0<=37)) ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1085:1: (lv_attributesTo_5_0= ruleEventAttributes )
            	    {
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1085:1: (lv_attributesTo_5_0= ruleEventAttributes )
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1086:3: lv_attributesTo_5_0= ruleEventAttributes
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getTransitionAreaAccess().getAttributesToEventAttributesParserRuleCall_5_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleEventAttributes_in_ruleTransitionArea2309);
            	    lv_attributesTo_5_0=ruleEventAttributes();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getTransitionAreaRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"attributesTo",
            	            		lv_attributesTo_5_0, 
            	            		"EventAttributes");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop16;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTransitionArea"


    // $ANTLR start "entryRuleEventAttributes"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1110:1: entryRuleEventAttributes returns [EObject current=null] : iv_ruleEventAttributes= ruleEventAttributes EOF ;
    public final EObject entryRuleEventAttributes() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEventAttributes = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1111:2: (iv_ruleEventAttributes= ruleEventAttributes EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1112:2: iv_ruleEventAttributes= ruleEventAttributes EOF
            {
             newCompositeNode(grammarAccess.getEventAttributesRule()); 
            pushFollow(FOLLOW_ruleEventAttributes_in_entryRuleEventAttributes2346);
            iv_ruleEventAttributes=ruleEventAttributes();

            state._fsp--;

             current =iv_ruleEventAttributes; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEventAttributes2356); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEventAttributes"


    // $ANTLR start "ruleEventAttributes"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1119:1: ruleEventAttributes returns [EObject current=null] : ( ( ( (lv_hasRadius_0_0= 'radius=' ) ) ( (lv_radius_1_0= RULE_INT ) ) ) | ( ( (lv_hasTime_2_0= 'time=' ) ) ( (otherlv_3= RULE_ID ) ) ) | ( ( (lv_hasTolerance_4_0= 'tolerance=' ) ) ( (lv_tolerance_5_0= RULE_INT ) ) ) ) ;
    public final EObject ruleEventAttributes() throws RecognitionException {
        EObject current = null;

        Token lv_hasRadius_0_0=null;
        Token lv_radius_1_0=null;
        Token lv_hasTime_2_0=null;
        Token otherlv_3=null;
        Token lv_hasTolerance_4_0=null;
        Token lv_tolerance_5_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1122:28: ( ( ( ( (lv_hasRadius_0_0= 'radius=' ) ) ( (lv_radius_1_0= RULE_INT ) ) ) | ( ( (lv_hasTime_2_0= 'time=' ) ) ( (otherlv_3= RULE_ID ) ) ) | ( ( (lv_hasTolerance_4_0= 'tolerance=' ) ) ( (lv_tolerance_5_0= RULE_INT ) ) ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1123:1: ( ( ( (lv_hasRadius_0_0= 'radius=' ) ) ( (lv_radius_1_0= RULE_INT ) ) ) | ( ( (lv_hasTime_2_0= 'time=' ) ) ( (otherlv_3= RULE_ID ) ) ) | ( ( (lv_hasTolerance_4_0= 'tolerance=' ) ) ( (lv_tolerance_5_0= RULE_INT ) ) ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1123:1: ( ( ( (lv_hasRadius_0_0= 'radius=' ) ) ( (lv_radius_1_0= RULE_INT ) ) ) | ( ( (lv_hasTime_2_0= 'time=' ) ) ( (otherlv_3= RULE_ID ) ) ) | ( ( (lv_hasTolerance_4_0= 'tolerance=' ) ) ( (lv_tolerance_5_0= RULE_INT ) ) ) )
            int alt17=3;
            switch ( input.LA(1) ) {
            case 36:
                {
                alt17=1;
                }
                break;
            case 33:
                {
                alt17=2;
                }
                break;
            case 37:
                {
                alt17=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;
            }

            switch (alt17) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1123:2: ( ( (lv_hasRadius_0_0= 'radius=' ) ) ( (lv_radius_1_0= RULE_INT ) ) )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1123:2: ( ( (lv_hasRadius_0_0= 'radius=' ) ) ( (lv_radius_1_0= RULE_INT ) ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1123:3: ( (lv_hasRadius_0_0= 'radius=' ) ) ( (lv_radius_1_0= RULE_INT ) )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1123:3: ( (lv_hasRadius_0_0= 'radius=' ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1124:1: (lv_hasRadius_0_0= 'radius=' )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1124:1: (lv_hasRadius_0_0= 'radius=' )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1125:3: lv_hasRadius_0_0= 'radius='
                    {
                    lv_hasRadius_0_0=(Token)match(input,36,FOLLOW_36_in_ruleEventAttributes2400); 

                            newLeafNode(lv_hasRadius_0_0, grammarAccess.getEventAttributesAccess().getHasRadiusRadiusKeyword_0_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getEventAttributesRule());
                    	        }
                           		setWithLastConsumed(current, "hasRadius", true, "radius=");
                    	    

                    }


                    }

                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1138:2: ( (lv_radius_1_0= RULE_INT ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1139:1: (lv_radius_1_0= RULE_INT )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1139:1: (lv_radius_1_0= RULE_INT )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1140:3: lv_radius_1_0= RULE_INT
                    {
                    lv_radius_1_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleEventAttributes2430); 

                    			newLeafNode(lv_radius_1_0, grammarAccess.getEventAttributesAccess().getRadiusINTTerminalRuleCall_0_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getEventAttributesRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"radius",
                            		lv_radius_1_0, 
                            		"INT");
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1157:6: ( ( (lv_hasTime_2_0= 'time=' ) ) ( (otherlv_3= RULE_ID ) ) )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1157:6: ( ( (lv_hasTime_2_0= 'time=' ) ) ( (otherlv_3= RULE_ID ) ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1157:7: ( (lv_hasTime_2_0= 'time=' ) ) ( (otherlv_3= RULE_ID ) )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1157:7: ( (lv_hasTime_2_0= 'time=' ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1158:1: (lv_hasTime_2_0= 'time=' )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1158:1: (lv_hasTime_2_0= 'time=' )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1159:3: lv_hasTime_2_0= 'time='
                    {
                    lv_hasTime_2_0=(Token)match(input,33,FOLLOW_33_in_ruleEventAttributes2461); 

                            newLeafNode(lv_hasTime_2_0, grammarAccess.getEventAttributesAccess().getHasTimeTimeKeyword_1_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getEventAttributesRule());
                    	        }
                           		setWithLastConsumed(current, "hasTime", true, "time=");
                    	    

                    }


                    }

                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1172:2: ( (otherlv_3= RULE_ID ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1173:1: (otherlv_3= RULE_ID )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1173:1: (otherlv_3= RULE_ID )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1174:3: otherlv_3= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getEventAttributesRule());
                    	        }
                            
                    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEventAttributes2494); 

                    		newLeafNode(otherlv_3, grammarAccess.getEventAttributesAccess().getTimeTimeTableCrossReference_1_1_0()); 
                    	

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1186:6: ( ( (lv_hasTolerance_4_0= 'tolerance=' ) ) ( (lv_tolerance_5_0= RULE_INT ) ) )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1186:6: ( ( (lv_hasTolerance_4_0= 'tolerance=' ) ) ( (lv_tolerance_5_0= RULE_INT ) ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1186:7: ( (lv_hasTolerance_4_0= 'tolerance=' ) ) ( (lv_tolerance_5_0= RULE_INT ) )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1186:7: ( (lv_hasTolerance_4_0= 'tolerance=' ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1187:1: (lv_hasTolerance_4_0= 'tolerance=' )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1187:1: (lv_hasTolerance_4_0= 'tolerance=' )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1188:3: lv_hasTolerance_4_0= 'tolerance='
                    {
                    lv_hasTolerance_4_0=(Token)match(input,37,FOLLOW_37_in_ruleEventAttributes2520); 

                            newLeafNode(lv_hasTolerance_4_0, grammarAccess.getEventAttributesAccess().getHasToleranceToleranceKeyword_2_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getEventAttributesRule());
                    	        }
                           		setWithLastConsumed(current, "hasTolerance", true, "tolerance=");
                    	    

                    }


                    }

                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1201:2: ( (lv_tolerance_5_0= RULE_INT ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1202:1: (lv_tolerance_5_0= RULE_INT )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1202:1: (lv_tolerance_5_0= RULE_INT )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1203:3: lv_tolerance_5_0= RULE_INT
                    {
                    lv_tolerance_5_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleEventAttributes2550); 

                    			newLeafNode(lv_tolerance_5_0, grammarAccess.getEventAttributesAccess().getToleranceINTTerminalRuleCall_2_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getEventAttributesRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"tolerance",
                            		lv_tolerance_5_0, 
                            		"INT");
                    	    

                    }


                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEventAttributes"


    // $ANTLR start "entryRuleAction"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1227:1: entryRuleAction returns [EObject current=null] : iv_ruleAction= ruleAction EOF ;
    public final EObject entryRuleAction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAction = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1228:2: (iv_ruleAction= ruleAction EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1229:2: iv_ruleAction= ruleAction EOF
            {
             newCompositeNode(grammarAccess.getActionRule()); 
            pushFollow(FOLLOW_ruleAction_in_entryRuleAction2592);
            iv_ruleAction=ruleAction();

            state._fsp--;

             current =iv_ruleAction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAction2602); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAction"


    // $ANTLR start "ruleAction"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1236:1: ruleAction returns [EObject current=null] : (this_SimpleAction_0= ruleSimpleAction | this_SequentialAction_1= ruleSequentialAction | this_ParallelAction_2= ruleParallelAction ) ;
    public final EObject ruleAction() throws RecognitionException {
        EObject current = null;

        EObject this_SimpleAction_0 = null;

        EObject this_SequentialAction_1 = null;

        EObject this_ParallelAction_2 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1239:28: ( (this_SimpleAction_0= ruleSimpleAction | this_SequentialAction_1= ruleSequentialAction | this_ParallelAction_2= ruleParallelAction ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1240:1: (this_SimpleAction_0= ruleSimpleAction | this_SequentialAction_1= ruleSequentialAction | this_ParallelAction_2= ruleParallelAction )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1240:1: (this_SimpleAction_0= ruleSimpleAction | this_SequentialAction_1= ruleSequentialAction | this_ParallelAction_2= ruleParallelAction )
            int alt18=3;
            switch ( input.LA(1) ) {
            case 38:
                {
                alt18=1;
                }
                break;
            case 40:
                {
                alt18=2;
                }
                break;
            case 41:
                {
                alt18=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 18, 0, input);

                throw nvae;
            }

            switch (alt18) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1241:5: this_SimpleAction_0= ruleSimpleAction
                    {
                     
                            newCompositeNode(grammarAccess.getActionAccess().getSimpleActionParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleSimpleAction_in_ruleAction2649);
                    this_SimpleAction_0=ruleSimpleAction();

                    state._fsp--;

                     
                            current = this_SimpleAction_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1251:5: this_SequentialAction_1= ruleSequentialAction
                    {
                     
                            newCompositeNode(grammarAccess.getActionAccess().getSequentialActionParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleSequentialAction_in_ruleAction2676);
                    this_SequentialAction_1=ruleSequentialAction();

                    state._fsp--;

                     
                            current = this_SequentialAction_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1261:5: this_ParallelAction_2= ruleParallelAction
                    {
                     
                            newCompositeNode(grammarAccess.getActionAccess().getParallelActionParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleParallelAction_in_ruleAction2703);
                    this_ParallelAction_2=ruleParallelAction();

                    state._fsp--;

                     
                            current = this_ParallelAction_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAction"


    // $ANTLR start "entryRuleSimpleAction"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1277:1: entryRuleSimpleAction returns [EObject current=null] : iv_ruleSimpleAction= ruleSimpleAction EOF ;
    public final EObject entryRuleSimpleAction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSimpleAction = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1278:2: (iv_ruleSimpleAction= ruleSimpleAction EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1279:2: iv_ruleSimpleAction= ruleSimpleAction EOF
            {
             newCompositeNode(grammarAccess.getSimpleActionRule()); 
            pushFollow(FOLLOW_ruleSimpleAction_in_entryRuleSimpleAction2738);
            iv_ruleSimpleAction=ruleSimpleAction();

            state._fsp--;

             current =iv_ruleSimpleAction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSimpleAction2748); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSimpleAction"


    // $ANTLR start "ruleSimpleAction"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1286:1: ruleSimpleAction returns [EObject current=null] : (otherlv_0= 'action' ( (lv_name_1_0= RULE_ID ) )? otherlv_2= 'on event' ( (otherlv_3= RULE_ID ) ) ( (lv_actionType_4_0= ruleActionType ) ) ) ;
    public final EObject ruleSimpleAction() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        EObject lv_actionType_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1289:28: ( (otherlv_0= 'action' ( (lv_name_1_0= RULE_ID ) )? otherlv_2= 'on event' ( (otherlv_3= RULE_ID ) ) ( (lv_actionType_4_0= ruleActionType ) ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1290:1: (otherlv_0= 'action' ( (lv_name_1_0= RULE_ID ) )? otherlv_2= 'on event' ( (otherlv_3= RULE_ID ) ) ( (lv_actionType_4_0= ruleActionType ) ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1290:1: (otherlv_0= 'action' ( (lv_name_1_0= RULE_ID ) )? otherlv_2= 'on event' ( (otherlv_3= RULE_ID ) ) ( (lv_actionType_4_0= ruleActionType ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1290:3: otherlv_0= 'action' ( (lv_name_1_0= RULE_ID ) )? otherlv_2= 'on event' ( (otherlv_3= RULE_ID ) ) ( (lv_actionType_4_0= ruleActionType ) )
            {
            otherlv_0=(Token)match(input,38,FOLLOW_38_in_ruleSimpleAction2785); 

                	newLeafNode(otherlv_0, grammarAccess.getSimpleActionAccess().getActionKeyword_0());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1294:1: ( (lv_name_1_0= RULE_ID ) )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==RULE_ID) ) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1295:1: (lv_name_1_0= RULE_ID )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1295:1: (lv_name_1_0= RULE_ID )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1296:3: lv_name_1_0= RULE_ID
                    {
                    lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSimpleAction2802); 

                    			newLeafNode(lv_name_1_0, grammarAccess.getSimpleActionAccess().getNameIDTerminalRuleCall_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getSimpleActionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"name",
                            		lv_name_1_0, 
                            		"ID");
                    	    

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,39,FOLLOW_39_in_ruleSimpleAction2820); 

                	newLeafNode(otherlv_2, grammarAccess.getSimpleActionAccess().getOnEventKeyword_2());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1316:1: ( (otherlv_3= RULE_ID ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1317:1: (otherlv_3= RULE_ID )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1317:1: (otherlv_3= RULE_ID )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1318:3: otherlv_3= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getSimpleActionRule());
            	        }
                    
            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSimpleAction2840); 

            		newLeafNode(otherlv_3, grammarAccess.getSimpleActionAccess().getEventEventCrossReference_3_0()); 
            	

            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1329:2: ( (lv_actionType_4_0= ruleActionType ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1330:1: (lv_actionType_4_0= ruleActionType )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1330:1: (lv_actionType_4_0= ruleActionType )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1331:3: lv_actionType_4_0= ruleActionType
            {
             
            	        newCompositeNode(grammarAccess.getSimpleActionAccess().getActionTypeActionTypeParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleActionType_in_ruleSimpleAction2861);
            lv_actionType_4_0=ruleActionType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSimpleActionRule());
            	        }
                   		set(
                   			current, 
                   			"actionType",
                    		lv_actionType_4_0, 
                    		"ActionType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSimpleAction"


    // $ANTLR start "entryRuleSequentialAction"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1355:1: entryRuleSequentialAction returns [EObject current=null] : iv_ruleSequentialAction= ruleSequentialAction EOF ;
    public final EObject entryRuleSequentialAction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSequentialAction = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1356:2: (iv_ruleSequentialAction= ruleSequentialAction EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1357:2: iv_ruleSequentialAction= ruleSequentialAction EOF
            {
             newCompositeNode(grammarAccess.getSequentialActionRule()); 
            pushFollow(FOLLOW_ruleSequentialAction_in_entryRuleSequentialAction2897);
            iv_ruleSequentialAction=ruleSequentialAction();

            state._fsp--;

             current =iv_ruleSequentialAction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSequentialAction2907); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSequentialAction"


    // $ANTLR start "ruleSequentialAction"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1364:1: ruleSequentialAction returns [EObject current=null] : (otherlv_0= 'sequential action' ( (lv_name_1_0= RULE_ID ) )? otherlv_2= 'on event' ( (otherlv_3= RULE_ID ) ) ( (lv_actionType_4_0= ruleActionType ) )* ) ;
    public final EObject ruleSequentialAction() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        EObject lv_actionType_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1367:28: ( (otherlv_0= 'sequential action' ( (lv_name_1_0= RULE_ID ) )? otherlv_2= 'on event' ( (otherlv_3= RULE_ID ) ) ( (lv_actionType_4_0= ruleActionType ) )* ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1368:1: (otherlv_0= 'sequential action' ( (lv_name_1_0= RULE_ID ) )? otherlv_2= 'on event' ( (otherlv_3= RULE_ID ) ) ( (lv_actionType_4_0= ruleActionType ) )* )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1368:1: (otherlv_0= 'sequential action' ( (lv_name_1_0= RULE_ID ) )? otherlv_2= 'on event' ( (otherlv_3= RULE_ID ) ) ( (lv_actionType_4_0= ruleActionType ) )* )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1368:3: otherlv_0= 'sequential action' ( (lv_name_1_0= RULE_ID ) )? otherlv_2= 'on event' ( (otherlv_3= RULE_ID ) ) ( (lv_actionType_4_0= ruleActionType ) )*
            {
            otherlv_0=(Token)match(input,40,FOLLOW_40_in_ruleSequentialAction2944); 

                	newLeafNode(otherlv_0, grammarAccess.getSequentialActionAccess().getSequentialActionKeyword_0());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1372:1: ( (lv_name_1_0= RULE_ID ) )?
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( (LA20_0==RULE_ID) ) {
                alt20=1;
            }
            switch (alt20) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1373:1: (lv_name_1_0= RULE_ID )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1373:1: (lv_name_1_0= RULE_ID )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1374:3: lv_name_1_0= RULE_ID
                    {
                    lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSequentialAction2961); 

                    			newLeafNode(lv_name_1_0, grammarAccess.getSequentialActionAccess().getNameIDTerminalRuleCall_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getSequentialActionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"name",
                            		lv_name_1_0, 
                            		"ID");
                    	    

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,39,FOLLOW_39_in_ruleSequentialAction2979); 

                	newLeafNode(otherlv_2, grammarAccess.getSequentialActionAccess().getOnEventKeyword_2());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1394:1: ( (otherlv_3= RULE_ID ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1395:1: (otherlv_3= RULE_ID )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1395:1: (otherlv_3= RULE_ID )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1396:3: otherlv_3= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getSequentialActionRule());
            	        }
                    
            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSequentialAction2999); 

            		newLeafNode(otherlv_3, grammarAccess.getSequentialActionAccess().getEventEventCrossReference_3_0()); 
            	

            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1407:2: ( (lv_actionType_4_0= ruleActionType ) )*
            loop21:
            do {
                int alt21=2;
                int LA21_0 = input.LA(1);

                if ( (LA21_0==42||(LA21_0>=46 && LA21_0<=49)) ) {
                    alt21=1;
                }


                switch (alt21) {
            	case 1 :
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1408:1: (lv_actionType_4_0= ruleActionType )
            	    {
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1408:1: (lv_actionType_4_0= ruleActionType )
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1409:3: lv_actionType_4_0= ruleActionType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getSequentialActionAccess().getActionTypeActionTypeParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleActionType_in_ruleSequentialAction3020);
            	    lv_actionType_4_0=ruleActionType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getSequentialActionRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"actionType",
            	            		lv_actionType_4_0, 
            	            		"ActionType");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop21;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSequentialAction"


    // $ANTLR start "entryRuleParallelAction"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1433:1: entryRuleParallelAction returns [EObject current=null] : iv_ruleParallelAction= ruleParallelAction EOF ;
    public final EObject entryRuleParallelAction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleParallelAction = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1434:2: (iv_ruleParallelAction= ruleParallelAction EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1435:2: iv_ruleParallelAction= ruleParallelAction EOF
            {
             newCompositeNode(grammarAccess.getParallelActionRule()); 
            pushFollow(FOLLOW_ruleParallelAction_in_entryRuleParallelAction3057);
            iv_ruleParallelAction=ruleParallelAction();

            state._fsp--;

             current =iv_ruleParallelAction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleParallelAction3067); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleParallelAction"


    // $ANTLR start "ruleParallelAction"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1442:1: ruleParallelAction returns [EObject current=null] : (otherlv_0= 'parallel action' ( (lv_name_1_0= RULE_ID ) )? otherlv_2= 'on event' ( (otherlv_3= RULE_ID ) ) ( (lv_actionType_4_0= ruleActionType ) )* ) ;
    public final EObject ruleParallelAction() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        EObject lv_actionType_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1445:28: ( (otherlv_0= 'parallel action' ( (lv_name_1_0= RULE_ID ) )? otherlv_2= 'on event' ( (otherlv_3= RULE_ID ) ) ( (lv_actionType_4_0= ruleActionType ) )* ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1446:1: (otherlv_0= 'parallel action' ( (lv_name_1_0= RULE_ID ) )? otherlv_2= 'on event' ( (otherlv_3= RULE_ID ) ) ( (lv_actionType_4_0= ruleActionType ) )* )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1446:1: (otherlv_0= 'parallel action' ( (lv_name_1_0= RULE_ID ) )? otherlv_2= 'on event' ( (otherlv_3= RULE_ID ) ) ( (lv_actionType_4_0= ruleActionType ) )* )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1446:3: otherlv_0= 'parallel action' ( (lv_name_1_0= RULE_ID ) )? otherlv_2= 'on event' ( (otherlv_3= RULE_ID ) ) ( (lv_actionType_4_0= ruleActionType ) )*
            {
            otherlv_0=(Token)match(input,41,FOLLOW_41_in_ruleParallelAction3104); 

                	newLeafNode(otherlv_0, grammarAccess.getParallelActionAccess().getParallelActionKeyword_0());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1450:1: ( (lv_name_1_0= RULE_ID ) )?
            int alt22=2;
            int LA22_0 = input.LA(1);

            if ( (LA22_0==RULE_ID) ) {
                alt22=1;
            }
            switch (alt22) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1451:1: (lv_name_1_0= RULE_ID )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1451:1: (lv_name_1_0= RULE_ID )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1452:3: lv_name_1_0= RULE_ID
                    {
                    lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleParallelAction3121); 

                    			newLeafNode(lv_name_1_0, grammarAccess.getParallelActionAccess().getNameIDTerminalRuleCall_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getParallelActionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"name",
                            		lv_name_1_0, 
                            		"ID");
                    	    

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,39,FOLLOW_39_in_ruleParallelAction3139); 

                	newLeafNode(otherlv_2, grammarAccess.getParallelActionAccess().getOnEventKeyword_2());
                
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1472:1: ( (otherlv_3= RULE_ID ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1473:1: (otherlv_3= RULE_ID )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1473:1: (otherlv_3= RULE_ID )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1474:3: otherlv_3= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getParallelActionRule());
            	        }
                    
            otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleParallelAction3159); 

            		newLeafNode(otherlv_3, grammarAccess.getParallelActionAccess().getEventEventCrossReference_3_0()); 
            	

            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1485:2: ( (lv_actionType_4_0= ruleActionType ) )*
            loop23:
            do {
                int alt23=2;
                int LA23_0 = input.LA(1);

                if ( (LA23_0==42||(LA23_0>=46 && LA23_0<=49)) ) {
                    alt23=1;
                }


                switch (alt23) {
            	case 1 :
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1486:1: (lv_actionType_4_0= ruleActionType )
            	    {
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1486:1: (lv_actionType_4_0= ruleActionType )
            	    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1487:3: lv_actionType_4_0= ruleActionType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getParallelActionAccess().getActionTypeActionTypeParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleActionType_in_ruleParallelAction3180);
            	    lv_actionType_4_0=ruleActionType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getParallelActionRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"actionType",
            	            		lv_actionType_4_0, 
            	            		"ActionType");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop23;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleParallelAction"


    // $ANTLR start "entryRuleActionType"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1511:1: entryRuleActionType returns [EObject current=null] : iv_ruleActionType= ruleActionType EOF ;
    public final EObject entryRuleActionType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleActionType = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1512:2: (iv_ruleActionType= ruleActionType EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1513:2: iv_ruleActionType= ruleActionType EOF
            {
             newCompositeNode(grammarAccess.getActionTypeRule()); 
            pushFollow(FOLLOW_ruleActionType_in_entryRuleActionType3217);
            iv_ruleActionType=ruleActionType();

            state._fsp--;

             current =iv_ruleActionType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleActionType3227); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleActionType"


    // $ANTLR start "ruleActionType"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1520:1: ruleActionType returns [EObject current=null] : ( ( (lv_actionType_0_1= ruleVibrate | lv_actionType_0_2= rulePlaySound | lv_actionType_0_3= rulePlayMedia | lv_actionType_0_4= ruleNotification | lv_actionType_0_5= ruleOpenBrowser ) ) ) ;
    public final EObject ruleActionType() throws RecognitionException {
        EObject current = null;

        EObject lv_actionType_0_1 = null;

        EObject lv_actionType_0_2 = null;

        EObject lv_actionType_0_3 = null;

        EObject lv_actionType_0_4 = null;

        EObject lv_actionType_0_5 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1523:28: ( ( ( (lv_actionType_0_1= ruleVibrate | lv_actionType_0_2= rulePlaySound | lv_actionType_0_3= rulePlayMedia | lv_actionType_0_4= ruleNotification | lv_actionType_0_5= ruleOpenBrowser ) ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1524:1: ( ( (lv_actionType_0_1= ruleVibrate | lv_actionType_0_2= rulePlaySound | lv_actionType_0_3= rulePlayMedia | lv_actionType_0_4= ruleNotification | lv_actionType_0_5= ruleOpenBrowser ) ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1524:1: ( ( (lv_actionType_0_1= ruleVibrate | lv_actionType_0_2= rulePlaySound | lv_actionType_0_3= rulePlayMedia | lv_actionType_0_4= ruleNotification | lv_actionType_0_5= ruleOpenBrowser ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1525:1: ( (lv_actionType_0_1= ruleVibrate | lv_actionType_0_2= rulePlaySound | lv_actionType_0_3= rulePlayMedia | lv_actionType_0_4= ruleNotification | lv_actionType_0_5= ruleOpenBrowser ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1525:1: ( (lv_actionType_0_1= ruleVibrate | lv_actionType_0_2= rulePlaySound | lv_actionType_0_3= rulePlayMedia | lv_actionType_0_4= ruleNotification | lv_actionType_0_5= ruleOpenBrowser ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1526:1: (lv_actionType_0_1= ruleVibrate | lv_actionType_0_2= rulePlaySound | lv_actionType_0_3= rulePlayMedia | lv_actionType_0_4= ruleNotification | lv_actionType_0_5= ruleOpenBrowser )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1526:1: (lv_actionType_0_1= ruleVibrate | lv_actionType_0_2= rulePlaySound | lv_actionType_0_3= rulePlayMedia | lv_actionType_0_4= ruleNotification | lv_actionType_0_5= ruleOpenBrowser )
            int alt24=5;
            switch ( input.LA(1) ) {
            case 42:
                {
                alt24=1;
                }
                break;
            case 46:
                {
                alt24=2;
                }
                break;
            case 47:
                {
                alt24=3;
                }
                break;
            case 49:
                {
                alt24=4;
                }
                break;
            case 48:
                {
                alt24=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 24, 0, input);

                throw nvae;
            }

            switch (alt24) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1527:3: lv_actionType_0_1= ruleVibrate
                    {
                     
                    	        newCompositeNode(grammarAccess.getActionTypeAccess().getActionTypeVibrateParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleVibrate_in_ruleActionType3274);
                    lv_actionType_0_1=ruleVibrate();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getActionTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"actionType",
                            		lv_actionType_0_1, 
                            		"Vibrate");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }
                    break;
                case 2 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1542:8: lv_actionType_0_2= rulePlaySound
                    {
                     
                    	        newCompositeNode(grammarAccess.getActionTypeAccess().getActionTypePlaySoundParserRuleCall_0_1()); 
                    	    
                    pushFollow(FOLLOW_rulePlaySound_in_ruleActionType3293);
                    lv_actionType_0_2=rulePlaySound();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getActionTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"actionType",
                            		lv_actionType_0_2, 
                            		"PlaySound");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }
                    break;
                case 3 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1557:8: lv_actionType_0_3= rulePlayMedia
                    {
                     
                    	        newCompositeNode(grammarAccess.getActionTypeAccess().getActionTypePlayMediaParserRuleCall_0_2()); 
                    	    
                    pushFollow(FOLLOW_rulePlayMedia_in_ruleActionType3312);
                    lv_actionType_0_3=rulePlayMedia();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getActionTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"actionType",
                            		lv_actionType_0_3, 
                            		"PlayMedia");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }
                    break;
                case 4 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1572:8: lv_actionType_0_4= ruleNotification
                    {
                     
                    	        newCompositeNode(grammarAccess.getActionTypeAccess().getActionTypeNotificationParserRuleCall_0_3()); 
                    	    
                    pushFollow(FOLLOW_ruleNotification_in_ruleActionType3331);
                    lv_actionType_0_4=ruleNotification();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getActionTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"actionType",
                            		lv_actionType_0_4, 
                            		"Notification");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }
                    break;
                case 5 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1587:8: lv_actionType_0_5= ruleOpenBrowser
                    {
                     
                    	        newCompositeNode(grammarAccess.getActionTypeAccess().getActionTypeOpenBrowserParserRuleCall_0_4()); 
                    	    
                    pushFollow(FOLLOW_ruleOpenBrowser_in_ruleActionType3350);
                    lv_actionType_0_5=ruleOpenBrowser();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getActionTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"actionType",
                            		lv_actionType_0_5, 
                            		"OpenBrowser");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }
                    break;

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleActionType"


    // $ANTLR start "entryRuleVibrate"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1613:1: entryRuleVibrate returns [EObject current=null] : iv_ruleVibrate= ruleVibrate EOF ;
    public final EObject entryRuleVibrate() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVibrate = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1614:2: (iv_ruleVibrate= ruleVibrate EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1615:2: iv_ruleVibrate= ruleVibrate EOF
            {
             newCompositeNode(grammarAccess.getVibrateRule()); 
            pushFollow(FOLLOW_ruleVibrate_in_entryRuleVibrate3388);
            iv_ruleVibrate=ruleVibrate();

            state._fsp--;

             current =iv_ruleVibrate; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleVibrate3398); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVibrate"


    // $ANTLR start "ruleVibrate"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1622:1: ruleVibrate returns [EObject current=null] : ( ( (lv_vibrate_0_0= 'vibrate' ) ) ( ( (lv_hasDuration_1_0= 'duration=' ) ) ( ( (lv_duration_2_1= 'short' | lv_duration_2_2= 'long' ) ) ) )? ) ;
    public final EObject ruleVibrate() throws RecognitionException {
        EObject current = null;

        Token lv_vibrate_0_0=null;
        Token lv_hasDuration_1_0=null;
        Token lv_duration_2_1=null;
        Token lv_duration_2_2=null;

         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1625:28: ( ( ( (lv_vibrate_0_0= 'vibrate' ) ) ( ( (lv_hasDuration_1_0= 'duration=' ) ) ( ( (lv_duration_2_1= 'short' | lv_duration_2_2= 'long' ) ) ) )? ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1626:1: ( ( (lv_vibrate_0_0= 'vibrate' ) ) ( ( (lv_hasDuration_1_0= 'duration=' ) ) ( ( (lv_duration_2_1= 'short' | lv_duration_2_2= 'long' ) ) ) )? )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1626:1: ( ( (lv_vibrate_0_0= 'vibrate' ) ) ( ( (lv_hasDuration_1_0= 'duration=' ) ) ( ( (lv_duration_2_1= 'short' | lv_duration_2_2= 'long' ) ) ) )? )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1626:2: ( (lv_vibrate_0_0= 'vibrate' ) ) ( ( (lv_hasDuration_1_0= 'duration=' ) ) ( ( (lv_duration_2_1= 'short' | lv_duration_2_2= 'long' ) ) ) )?
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1626:2: ( (lv_vibrate_0_0= 'vibrate' ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1627:1: (lv_vibrate_0_0= 'vibrate' )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1627:1: (lv_vibrate_0_0= 'vibrate' )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1628:3: lv_vibrate_0_0= 'vibrate'
            {
            lv_vibrate_0_0=(Token)match(input,42,FOLLOW_42_in_ruleVibrate3441); 

                    newLeafNode(lv_vibrate_0_0, grammarAccess.getVibrateAccess().getVibrateVibrateKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getVibrateRule());
            	        }
                   		setWithLastConsumed(current, "vibrate", lv_vibrate_0_0, "vibrate");
            	    

            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1641:2: ( ( (lv_hasDuration_1_0= 'duration=' ) ) ( ( (lv_duration_2_1= 'short' | lv_duration_2_2= 'long' ) ) ) )?
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==43) ) {
                alt26=1;
            }
            switch (alt26) {
                case 1 :
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1641:3: ( (lv_hasDuration_1_0= 'duration=' ) ) ( ( (lv_duration_2_1= 'short' | lv_duration_2_2= 'long' ) ) )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1641:3: ( (lv_hasDuration_1_0= 'duration=' ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1642:1: (lv_hasDuration_1_0= 'duration=' )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1642:1: (lv_hasDuration_1_0= 'duration=' )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1643:3: lv_hasDuration_1_0= 'duration='
                    {
                    lv_hasDuration_1_0=(Token)match(input,43,FOLLOW_43_in_ruleVibrate3473); 

                            newLeafNode(lv_hasDuration_1_0, grammarAccess.getVibrateAccess().getHasDurationDurationKeyword_1_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getVibrateRule());
                    	        }
                           		setWithLastConsumed(current, "hasDuration", true, "duration=");
                    	    

                    }


                    }

                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1656:2: ( ( (lv_duration_2_1= 'short' | lv_duration_2_2= 'long' ) ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1657:1: ( (lv_duration_2_1= 'short' | lv_duration_2_2= 'long' ) )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1657:1: ( (lv_duration_2_1= 'short' | lv_duration_2_2= 'long' ) )
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1658:1: (lv_duration_2_1= 'short' | lv_duration_2_2= 'long' )
                    {
                    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1658:1: (lv_duration_2_1= 'short' | lv_duration_2_2= 'long' )
                    int alt25=2;
                    int LA25_0 = input.LA(1);

                    if ( (LA25_0==44) ) {
                        alt25=1;
                    }
                    else if ( (LA25_0==45) ) {
                        alt25=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 25, 0, input);

                        throw nvae;
                    }
                    switch (alt25) {
                        case 1 :
                            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1659:3: lv_duration_2_1= 'short'
                            {
                            lv_duration_2_1=(Token)match(input,44,FOLLOW_44_in_ruleVibrate3506); 

                                    newLeafNode(lv_duration_2_1, grammarAccess.getVibrateAccess().getDurationShortKeyword_1_1_0_0());
                                

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getVibrateRule());
                            	        }
                                   		setWithLastConsumed(current, "duration", lv_duration_2_1, null);
                            	    

                            }
                            break;
                        case 2 :
                            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1671:8: lv_duration_2_2= 'long'
                            {
                            lv_duration_2_2=(Token)match(input,45,FOLLOW_45_in_ruleVibrate3535); 

                                    newLeafNode(lv_duration_2_2, grammarAccess.getVibrateAccess().getDurationLongKeyword_1_1_0_1());
                                

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getVibrateRule());
                            	        }
                                   		setWithLastConsumed(current, "duration", lv_duration_2_2, null);
                            	    

                            }
                            break;

                    }


                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVibrate"


    // $ANTLR start "entryRulePlaySound"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1694:1: entryRulePlaySound returns [EObject current=null] : iv_rulePlaySound= rulePlaySound EOF ;
    public final EObject entryRulePlaySound() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePlaySound = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1695:2: (iv_rulePlaySound= rulePlaySound EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1696:2: iv_rulePlaySound= rulePlaySound EOF
            {
             newCompositeNode(grammarAccess.getPlaySoundRule()); 
            pushFollow(FOLLOW_rulePlaySound_in_entryRulePlaySound3589);
            iv_rulePlaySound=rulePlaySound();

            state._fsp--;

             current =iv_rulePlaySound; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePlaySound3599); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePlaySound"


    // $ANTLR start "rulePlaySound"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1703:1: rulePlaySound returns [EObject current=null] : ( ( (lv_playSound_0_0= 'sound' ) ) ( (lv_soundFileName_1_0= RULE_STRING ) ) ) ;
    public final EObject rulePlaySound() throws RecognitionException {
        EObject current = null;

        Token lv_playSound_0_0=null;
        Token lv_soundFileName_1_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1706:28: ( ( ( (lv_playSound_0_0= 'sound' ) ) ( (lv_soundFileName_1_0= RULE_STRING ) ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1707:1: ( ( (lv_playSound_0_0= 'sound' ) ) ( (lv_soundFileName_1_0= RULE_STRING ) ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1707:1: ( ( (lv_playSound_0_0= 'sound' ) ) ( (lv_soundFileName_1_0= RULE_STRING ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1707:2: ( (lv_playSound_0_0= 'sound' ) ) ( (lv_soundFileName_1_0= RULE_STRING ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1707:2: ( (lv_playSound_0_0= 'sound' ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1708:1: (lv_playSound_0_0= 'sound' )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1708:1: (lv_playSound_0_0= 'sound' )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1709:3: lv_playSound_0_0= 'sound'
            {
            lv_playSound_0_0=(Token)match(input,46,FOLLOW_46_in_rulePlaySound3642); 

                    newLeafNode(lv_playSound_0_0, grammarAccess.getPlaySoundAccess().getPlaySoundSoundKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getPlaySoundRule());
            	        }
                   		setWithLastConsumed(current, "playSound", lv_playSound_0_0, "sound");
            	    

            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1722:2: ( (lv_soundFileName_1_0= RULE_STRING ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1723:1: (lv_soundFileName_1_0= RULE_STRING )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1723:1: (lv_soundFileName_1_0= RULE_STRING )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1724:3: lv_soundFileName_1_0= RULE_STRING
            {
            lv_soundFileName_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePlaySound3672); 

            			newLeafNode(lv_soundFileName_1_0, grammarAccess.getPlaySoundAccess().getSoundFileNameSTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getPlaySoundRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"soundFileName",
                    		lv_soundFileName_1_0, 
                    		"STRING");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePlaySound"


    // $ANTLR start "entryRulePlayMedia"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1748:1: entryRulePlayMedia returns [EObject current=null] : iv_rulePlayMedia= rulePlayMedia EOF ;
    public final EObject entryRulePlayMedia() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePlayMedia = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1749:2: (iv_rulePlayMedia= rulePlayMedia EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1750:2: iv_rulePlayMedia= rulePlayMedia EOF
            {
             newCompositeNode(grammarAccess.getPlayMediaRule()); 
            pushFollow(FOLLOW_rulePlayMedia_in_entryRulePlayMedia3713);
            iv_rulePlayMedia=rulePlayMedia();

            state._fsp--;

             current =iv_rulePlayMedia; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePlayMedia3723); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePlayMedia"


    // $ANTLR start "rulePlayMedia"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1757:1: rulePlayMedia returns [EObject current=null] : ( ( (lv_playMedia_0_0= 'media' ) ) ( (lv_mediaFileName_1_0= RULE_STRING ) ) ) ;
    public final EObject rulePlayMedia() throws RecognitionException {
        EObject current = null;

        Token lv_playMedia_0_0=null;
        Token lv_mediaFileName_1_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1760:28: ( ( ( (lv_playMedia_0_0= 'media' ) ) ( (lv_mediaFileName_1_0= RULE_STRING ) ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1761:1: ( ( (lv_playMedia_0_0= 'media' ) ) ( (lv_mediaFileName_1_0= RULE_STRING ) ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1761:1: ( ( (lv_playMedia_0_0= 'media' ) ) ( (lv_mediaFileName_1_0= RULE_STRING ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1761:2: ( (lv_playMedia_0_0= 'media' ) ) ( (lv_mediaFileName_1_0= RULE_STRING ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1761:2: ( (lv_playMedia_0_0= 'media' ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1762:1: (lv_playMedia_0_0= 'media' )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1762:1: (lv_playMedia_0_0= 'media' )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1763:3: lv_playMedia_0_0= 'media'
            {
            lv_playMedia_0_0=(Token)match(input,47,FOLLOW_47_in_rulePlayMedia3766); 

                    newLeafNode(lv_playMedia_0_0, grammarAccess.getPlayMediaAccess().getPlayMediaMediaKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getPlayMediaRule());
            	        }
                   		setWithLastConsumed(current, "playMedia", lv_playMedia_0_0, "media");
            	    

            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1776:2: ( (lv_mediaFileName_1_0= RULE_STRING ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1777:1: (lv_mediaFileName_1_0= RULE_STRING )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1777:1: (lv_mediaFileName_1_0= RULE_STRING )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1778:3: lv_mediaFileName_1_0= RULE_STRING
            {
            lv_mediaFileName_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePlayMedia3796); 

            			newLeafNode(lv_mediaFileName_1_0, grammarAccess.getPlayMediaAccess().getMediaFileNameSTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getPlayMediaRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"mediaFileName",
                    		lv_mediaFileName_1_0, 
                    		"STRING");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePlayMedia"


    // $ANTLR start "entryRuleOpenBrowser"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1802:1: entryRuleOpenBrowser returns [EObject current=null] : iv_ruleOpenBrowser= ruleOpenBrowser EOF ;
    public final EObject entryRuleOpenBrowser() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOpenBrowser = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1803:2: (iv_ruleOpenBrowser= ruleOpenBrowser EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1804:2: iv_ruleOpenBrowser= ruleOpenBrowser EOF
            {
             newCompositeNode(grammarAccess.getOpenBrowserRule()); 
            pushFollow(FOLLOW_ruleOpenBrowser_in_entryRuleOpenBrowser3837);
            iv_ruleOpenBrowser=ruleOpenBrowser();

            state._fsp--;

             current =iv_ruleOpenBrowser; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpenBrowser3847); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpenBrowser"


    // $ANTLR start "ruleOpenBrowser"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1811:1: ruleOpenBrowser returns [EObject current=null] : ( ( (lv_openBrowser_0_0= 'openbrowser' ) ) ( (lv_url_1_0= RULE_STRING ) ) ) ;
    public final EObject ruleOpenBrowser() throws RecognitionException {
        EObject current = null;

        Token lv_openBrowser_0_0=null;
        Token lv_url_1_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1814:28: ( ( ( (lv_openBrowser_0_0= 'openbrowser' ) ) ( (lv_url_1_0= RULE_STRING ) ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1815:1: ( ( (lv_openBrowser_0_0= 'openbrowser' ) ) ( (lv_url_1_0= RULE_STRING ) ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1815:1: ( ( (lv_openBrowser_0_0= 'openbrowser' ) ) ( (lv_url_1_0= RULE_STRING ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1815:2: ( (lv_openBrowser_0_0= 'openbrowser' ) ) ( (lv_url_1_0= RULE_STRING ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1815:2: ( (lv_openBrowser_0_0= 'openbrowser' ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1816:1: (lv_openBrowser_0_0= 'openbrowser' )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1816:1: (lv_openBrowser_0_0= 'openbrowser' )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1817:3: lv_openBrowser_0_0= 'openbrowser'
            {
            lv_openBrowser_0_0=(Token)match(input,48,FOLLOW_48_in_ruleOpenBrowser3890); 

                    newLeafNode(lv_openBrowser_0_0, grammarAccess.getOpenBrowserAccess().getOpenBrowserOpenbrowserKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getOpenBrowserRule());
            	        }
                   		setWithLastConsumed(current, "openBrowser", lv_openBrowser_0_0, "openbrowser");
            	    

            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1830:2: ( (lv_url_1_0= RULE_STRING ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1831:1: (lv_url_1_0= RULE_STRING )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1831:1: (lv_url_1_0= RULE_STRING )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1832:3: lv_url_1_0= RULE_STRING
            {
            lv_url_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleOpenBrowser3920); 

            			newLeafNode(lv_url_1_0, grammarAccess.getOpenBrowserAccess().getUrlSTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getOpenBrowserRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"url",
                    		lv_url_1_0, 
                    		"STRING");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpenBrowser"


    // $ANTLR start "entryRuleNotification"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1856:1: entryRuleNotification returns [EObject current=null] : iv_ruleNotification= ruleNotification EOF ;
    public final EObject entryRuleNotification() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNotification = null;


        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1857:2: (iv_ruleNotification= ruleNotification EOF )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1858:2: iv_ruleNotification= ruleNotification EOF
            {
             newCompositeNode(grammarAccess.getNotificationRule()); 
            pushFollow(FOLLOW_ruleNotification_in_entryRuleNotification3961);
            iv_ruleNotification=ruleNotification();

            state._fsp--;

             current =iv_ruleNotification; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNotification3971); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNotification"


    // $ANTLR start "ruleNotification"
    // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1865:1: ruleNotification returns [EObject current=null] : ( ( (lv_notification_0_0= 'notification' ) ) ( (lv_message_1_0= RULE_STRING ) ) ) ;
    public final EObject ruleNotification() throws RecognitionException {
        EObject current = null;

        Token lv_notification_0_0=null;
        Token lv_message_1_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1868:28: ( ( ( (lv_notification_0_0= 'notification' ) ) ( (lv_message_1_0= RULE_STRING ) ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1869:1: ( ( (lv_notification_0_0= 'notification' ) ) ( (lv_message_1_0= RULE_STRING ) ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1869:1: ( ( (lv_notification_0_0= 'notification' ) ) ( (lv_message_1_0= RULE_STRING ) ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1869:2: ( (lv_notification_0_0= 'notification' ) ) ( (lv_message_1_0= RULE_STRING ) )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1869:2: ( (lv_notification_0_0= 'notification' ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1870:1: (lv_notification_0_0= 'notification' )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1870:1: (lv_notification_0_0= 'notification' )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1871:3: lv_notification_0_0= 'notification'
            {
            lv_notification_0_0=(Token)match(input,49,FOLLOW_49_in_ruleNotification4014); 

                    newLeafNode(lv_notification_0_0, grammarAccess.getNotificationAccess().getNotificationNotificationKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getNotificationRule());
            	        }
                   		setWithLastConsumed(current, "notification", lv_notification_0_0, "notification");
            	    

            }


            }

            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1884:2: ( (lv_message_1_0= RULE_STRING ) )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1885:1: (lv_message_1_0= RULE_STRING )
            {
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1885:1: (lv_message_1_0= RULE_STRING )
            // ../org.xtext.context.aware/src-gen/org/xtext/context/aware/parser/antlr/internal/InternalEventX.g:1886:3: lv_message_1_0= RULE_STRING
            {
            lv_message_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleNotification4044); 

            			newLeafNode(lv_message_1_0, grammarAccess.getNotificationAccess().getMessageSTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getNotificationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"message",
                    		lv_message_1_0, 
                    		"STRING");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNotification"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleContextAwareModel_in_entryRuleContextAwareModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleContextAwareModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElement_in_ruleContextAwareModel130 = new BitSet(new long[]{0x0000034000800802L});
    public static final BitSet FOLLOW_ruleElement_in_entryRuleElement166 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleElement176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTimeTable_in_ruleElement223 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEvent_in_ruleElement250 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAction_in_ruleElement277 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTimeTable_in_entryRuleTimeTable312 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTimeTable322 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleTimeTable359 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTimeTable376 = new BitSet(new long[]{0x00000000003FB002L});
    public static final BitSet FOLLOW_12_in_ruleTimeTable394 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleDate_in_ruleTimeTable415 = new BitSet(new long[]{0x00000000003FA002L});
    public static final BitSet FOLLOW_13_in_ruleTimeTable430 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleDate_in_ruleTimeTable451 = new BitSet(new long[]{0x00000000003F8002L});
    public static final BitSet FOLLOW_ruleWeekDayTime_in_ruleTimeTable474 = new BitSet(new long[]{0x00000000003F8002L});
    public static final BitSet FOLLOW_ruleDate_in_entryRuleDate511 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDate521 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleDate563 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleDate580 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleDate597 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleDate614 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleDate631 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleWeekDayTime_in_entryRuleWeekDayTime672 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleWeekDayTime682 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_ruleWeekDayTime727 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_16_in_ruleWeekDayTime756 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_17_in_ruleWeekDayTime785 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_18_in_ruleWeekDayTime814 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_19_in_ruleWeekDayTime843 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_20_in_ruleWeekDayTime872 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_21_in_ruleWeekDayTime901 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleTime_in_ruleWeekDayTime938 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleWeekDayTime950 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleTime_in_ruleWeekDayTime971 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTime_in_entryRuleTime1007 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTime1017 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleTime1059 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleTime1076 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleTime1093 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEvent_in_entryRuleEvent1134 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEvent1144 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleEvent1181 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEvent1198 = new BitSet(new long[]{0x0000000003000000L});
    public static final BitSet FOLLOW_24_in_ruleEvent1222 = new BitSet(new long[]{0x0003C40000000000L});
    public static final BitSet FOLLOW_ruleActionType_in_ruleEvent1256 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleEvent1270 = new BitSet(new long[]{0x0000000D84000002L});
    public static final BitSet FOLLOW_ruleEventType_in_ruleEvent1291 = new BitSet(new long[]{0x0000000D84000002L});
    public static final BitSet FOLLOW_ruleEventType_in_entryRuleEventType1328 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEventType1338 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConditionalEvent_in_ruleEventType1385 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBasicEvent_in_ruleEventType1412 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBasicEvent_in_entryRuleBasicEvent1447 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBasicEvent1457 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRoomEvent_in_ruleBasicEvent1504 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCloseBy_in_ruleBasicEvent1531 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTransitionArea_in_ruleBasicEvent1558 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConditionalEvent_in_entryRuleConditionalEvent1593 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConditionalEvent1603 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleConditionalEvent1640 = new BitSet(new long[]{0x0000000D84000000L});
    public static final BitSet FOLLOW_ruleBasicEvent_in_ruleConditionalEvent1661 = new BitSet(new long[]{0x0000000038000000L});
    public static final BitSet FOLLOW_27_in_ruleConditionalEvent1681 = new BitSet(new long[]{0x0000000D84000000L});
    public static final BitSet FOLLOW_28_in_ruleConditionalEvent1710 = new BitSet(new long[]{0x0000000D84000000L});
    public static final BitSet FOLLOW_29_in_ruleConditionalEvent1739 = new BitSet(new long[]{0x0000000D84000000L});
    public static final BitSet FOLLOW_ruleEventType_in_ruleConditionalEvent1776 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_30_in_ruleConditionalEvent1788 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRoomEvent_in_entryRuleRoomEvent1824 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRoomEvent1834 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleRoomEvent1879 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_32_in_ruleRoomEvent1908 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRoomEvent1941 = new BitSet(new long[]{0x0000000200000002L});
    public static final BitSet FOLLOW_33_in_ruleRoomEvent1965 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRoomEvent1998 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCloseBy_in_entryRuleCloseBy2036 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCloseBy2046 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleCloseBy2083 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleCloseBy2100 = new BitSet(new long[]{0x0000003200000002L});
    public static final BitSet FOLLOW_ruleEventAttributes_in_ruleCloseBy2126 = new BitSet(new long[]{0x0000003200000002L});
    public static final BitSet FOLLOW_ruleTransitionArea_in_entryRuleTransitionArea2163 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTransitionArea2173 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_35_in_ruleTransitionArea2210 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTransitionArea2227 = new BitSet(new long[]{0x0000003200002000L});
    public static final BitSet FOLLOW_ruleEventAttributes_in_ruleTransitionArea2253 = new BitSet(new long[]{0x0000003200002000L});
    public static final BitSet FOLLOW_13_in_ruleTransitionArea2266 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTransitionArea2283 = new BitSet(new long[]{0x0000003200000002L});
    public static final BitSet FOLLOW_ruleEventAttributes_in_ruleTransitionArea2309 = new BitSet(new long[]{0x0000003200000002L});
    public static final BitSet FOLLOW_ruleEventAttributes_in_entryRuleEventAttributes2346 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEventAttributes2356 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_ruleEventAttributes2400 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleEventAttributes2430 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_ruleEventAttributes2461 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEventAttributes2494 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleEventAttributes2520 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleEventAttributes2550 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAction_in_entryRuleAction2592 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAction2602 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimpleAction_in_ruleAction2649 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSequentialAction_in_ruleAction2676 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleParallelAction_in_ruleAction2703 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimpleAction_in_entryRuleSimpleAction2738 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSimpleAction2748 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_ruleSimpleAction2785 = new BitSet(new long[]{0x0000008000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleSimpleAction2802 = new BitSet(new long[]{0x0000008000000000L});
    public static final BitSet FOLLOW_39_in_ruleSimpleAction2820 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleSimpleAction2840 = new BitSet(new long[]{0x0003C40000000000L});
    public static final BitSet FOLLOW_ruleActionType_in_ruleSimpleAction2861 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSequentialAction_in_entryRuleSequentialAction2897 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSequentialAction2907 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_ruleSequentialAction2944 = new BitSet(new long[]{0x0000008000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleSequentialAction2961 = new BitSet(new long[]{0x0000008000000000L});
    public static final BitSet FOLLOW_39_in_ruleSequentialAction2979 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleSequentialAction2999 = new BitSet(new long[]{0x0003C40000000002L});
    public static final BitSet FOLLOW_ruleActionType_in_ruleSequentialAction3020 = new BitSet(new long[]{0x0003C40000000002L});
    public static final BitSet FOLLOW_ruleParallelAction_in_entryRuleParallelAction3057 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleParallelAction3067 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_41_in_ruleParallelAction3104 = new BitSet(new long[]{0x0000008000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleParallelAction3121 = new BitSet(new long[]{0x0000008000000000L});
    public static final BitSet FOLLOW_39_in_ruleParallelAction3139 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleParallelAction3159 = new BitSet(new long[]{0x0003C40000000002L});
    public static final BitSet FOLLOW_ruleActionType_in_ruleParallelAction3180 = new BitSet(new long[]{0x0003C40000000002L});
    public static final BitSet FOLLOW_ruleActionType_in_entryRuleActionType3217 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleActionType3227 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVibrate_in_ruleActionType3274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlaySound_in_ruleActionType3293 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlayMedia_in_ruleActionType3312 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNotification_in_ruleActionType3331 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpenBrowser_in_ruleActionType3350 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVibrate_in_entryRuleVibrate3388 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVibrate3398 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleVibrate3441 = new BitSet(new long[]{0x0000080000000002L});
    public static final BitSet FOLLOW_43_in_ruleVibrate3473 = new BitSet(new long[]{0x0000300000000000L});
    public static final BitSet FOLLOW_44_in_ruleVibrate3506 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_ruleVibrate3535 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlaySound_in_entryRulePlaySound3589 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePlaySound3599 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_rulePlaySound3642 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePlaySound3672 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlayMedia_in_entryRulePlayMedia3713 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePlayMedia3723 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_rulePlayMedia3766 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePlayMedia3796 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpenBrowser_in_entryRuleOpenBrowser3837 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpenBrowser3847 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_48_in_ruleOpenBrowser3890 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleOpenBrowser3920 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNotification_in_entryRuleNotification3961 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNotification3971 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleNotification4014 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleNotification4044 = new BitSet(new long[]{0x0000000000000002L});

}